276_Python_桌面的一个TXT文档里的内容,插入到Word文档的指定位置

2023-11-09

在当前Word文档的第几段插入内容;

当你需要将一个TXT文档的内容插入到Word文档的特定位置时,你可以使用Python的docx库来处理Word文档,以及内置的文件操作功能来读取TXT文档。首先,确保你已经安装了docx库,如果没有,可以使用以下命令来安装:

pip install python-docx

接下来,你可以使用以下Python脚本来实现你的需求:

from docx import Document

# 打开Word文档
doc = Document("你的Word文档路径.docx")

# 读取要插入的TXT文档内容
with open("你的TXT文档路径.txt", "r", encoding="utf-8") as txt_file:
    txt_content = txt_file.read()

# 在指定位置插入TXT文档内容
# 这里假设你想在第二段后插入内容,如果需要插入到其他位置,请自行调整索引
# 注意:段落索引是从0开始计数
insert_paragraph_index = 1
doc.paragraphs[insert_paragraph_index].add_run(txt_content)

# 保存修改后的Word文档
doc.save("新的Word文档路径.docx")

print("内容已插入到Word文档中")

请将上述代码中的路径替换为你自己的TXT文档和Word文档的路径。这个脚本会将TXT文档的内容插入到指定的Word文档位置,然后保存为新的Word文档。注意,这里的插入位置是第二段(索引为1),你可以根据需要修改插入的位置。


找到“修改内容”或者某一个单元格,把TXT文档的数据插入到这个单元格下方:

如果你想将TXT文档的内容插入到Word文档中的一个名为"修改内容"的单条表格下面,你可以使用以下代码来实现:

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import OxmlElement

# 打开Word文档
doc = Document("你的Word文档路径.docx")

# 读取要插入的TXT文档内容
with open("你的TXT文档路径.txt", "r", encoding="utf-8") as txt_file:
    txt_content = txt_file.read()

# 找到表格的标题行为"修改内容"的单元格
for table in doc.tables:
    for row in table.rows:
        for cell in row.cells:
            if "修改内容" in cell.text:
                # 在单元格下方插入内容
                cell.add_paragraph(txt_content)

# 保存修改后的Word文档
doc.save("新的Word文档路径.docx")

print("内容已插入到指定表格下方")

这个脚本会在名为"修改内容"的单元格下方插入TXT文档的内容,然后保存为新的Word文档。确保将脚本中的路径替换为你自己的TXT文档和Word文档的路径。如果Word文档中有多个表格,该脚本将在找到的第一个表格中插入内容,你可以根据需要进行修改。

"修改内容"的单元格中已经有文本存在,我想插入到这些文本的最上面

如果你想将TXT文档的内容插入到"修改内容"单元格下已有文本的最上面,你可以使用以下代码来实现:

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import OxmlElement

# 打开Word文档
doc = Document("你的Word文档路径.docx")

# 读取要插入的TXT文档内容
with open("你的TXT文档路径.txt", "r", encoding="utf-8") as txt_file:
    txt_content = txt_file.read()

# 找到表格的标题行为"修改内容"的单元格
for table in doc.tables:
    for row in table.rows:
        for cell in row.cells:
            if "修改内容" in cell.text:
                # 获取单元格的所有段落
                paragraphs = cell.paragraphs

                # 在单元格中的第一个段落之前插入内容
                first_paragraph = paragraphs[0]
                new_paragraph = cell.insert_paragraph_before(txt_content)

                # 调整新段落的格式以匹配原始段落
                new_paragraph.alignment = first_paragraph.alignment
                new_paragraph.paragraph_format.space_before = first_paragraph.paragraph_format.space_before
                new_paragraph.paragraph_format.space_after = first_paragraph.paragraph_format.space_after

# 保存修改后的Word文档
doc.save("新的Word文档路径.docx")

print("内容已插入到指定表格下已有文本的最上面")

这个脚本会在名为"修改内容"的单元格下已有文本的最上面插入TXT文档的内容,然后保存为新的Word文档。确保将脚本中的路径替换为你自己的TXT文档和Word文档的路径。如果Word文档中有多个表格,该脚本将在找到的第一个表格中插入内容,你可以根据需要进行修改。

将TXT文档的内容插入到"修改内容"单元格下方,而不是单元格内部,但是插入了新的表格到原始表格的下方

如果你想将TXT文档的内容插入到"修改内容"单元格下方,而不是单元格内部,你可以使用以下代码来实现:

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import OxmlElement

# 打开Word文档
doc = Document("你的Word文档路径.docx")

# 读取要插入的TXT文档内容
with open("你的TXT文档路径.txt", "r", encoding="utf-8") as txt_file:
    txt_content = txt_file.read()

# 找到表格的标题行为"修改内容"的单元格
for table in doc.tables:
    for row in table.rows:
        for cell in row.cells:
            if "修改内容" in cell.text:
                # 获取单元格所在表格的索引
                table_index = doc.tables.index(table)

                # 在表格下方插入新表格
                new_table = doc.add_table(rows=1, cols=1)
                new_table.autofit = False  # 防止自动调整列宽

                # 合并新表格的单元格,使其与原始表格的列数相同
                for _ in range(len(table.columns) - 1):
                    new_table.add_column()

                # 插入新表格到原始表格的下方
                doc.tables.insert(table_index + 1, new_table)

                # 在新表格中添加内容
                new_table.cell(0, 0).paragraphs[0].add_run(txt_content)

# 保存修改后的Word文档
doc.save("新的Word文档路径.docx")

print("内容已插入到指定表格下方")

这个脚本会在名为"修改内容"的单元格下方插入一个新的表格,并将TXT文档的内容放入新表格的第一个单元格中,然后保存为新的Word文档。确保将脚本中的路径替换为你自己的TXT文档和Word文档的路径。如果Word文档中有多个表格,该脚本将在找到的第一个表格下方插入新表格,你可以根据需要进行修改。

"修改内容"单元格的下方,不需要新插入表格,而是在单元格下方原有的内容中,插入到原有内容的第一行

如果你想将TXT文档的内容插入到"修改内容"单元格下方的原有内容中的第一行,可以使用以下代码来实现:

from docx import Document

# 打开Word文档
doc = Document("你的Word文档路径.docx")

# 读取要插入的TXT文档内容
with open("你的TXT文档路径.txt", "r", encoding="utf-8") as txt_file:
    txt_content = txt_file.read()

# 找到表格的标题行为"修改内容"的单元格
for table in doc.tables:
    for row in table.rows:
        for cell in row.cells:
            if "修改内容" in cell.text:
                # 获取单元格的所有段落
                cell_paragraphs = cell.paragraphs

                # 在单元格下方的原有内容的第一行插入TXT文档内容
                if len(cell_paragraphs) > 0:
                    first_paragraph = cell_paragraphs[0]
                    first_paragraph.add_run("\n" + txt_content)
                else:
                    cell.add_paragraph(txt_content)

# 保存修改后的Word文档
doc.save("新的Word文档路径.docx")

print("内容已插入到指定单元格下方的第一行")

这个脚本会在名为"修改内容"的单元格下方的原有内容的第一行插入TXT文档的内容,然后保存为新的Word文档。确保将脚本中的路径替换为你自己的TXT文档和Word文档的路径。如果Word文档中有多个表格,该脚本将在找到的第一个表格中插入内容,你可以根据需要进行修改。


当有多行单元格的时候,怎么找到最下一层的"修改内容"的单元格

要找到多层嵌套的表格中的最下一层的包含"修改内容"的单元格,你可以使用递归方法来深度搜索所有的单元格。以下是一个示例脚本:

from docx import Document

def find_cell_with_text(table, target_text):
    for row in table.rows:
        for cell in row.cells:
            if target_text in cell.text:
                return cell

def find_deepest_cell_with_text(doc, target_text):
    for table in doc.tables:
        cell = find_cell_with_text(table, target_text)
        if cell:
            return cell
        # 如果当前表格没有目标单元格,递归搜索嵌套的表格
        for row in table.rows:
            for cell in row.cells:
                if cell.tables:
                    nested_cell = find_deepest_cell_with_text(cell, target_text)
                    if nested_cell:
                        return nested_cell

    return None

# 打开Word文档
doc = Document("你的Word文档路径.docx")

# 要查找的目标文本
target_text = "修改内容"

# 找到最下一层的包含目标文本的单元格
deepest_cell = find_deepest_cell_with_text(doc, target_text)

if deepest_cell:
    print(f"找到包含'{target_text}'的最下一层单元格")
else:
    print(f"未找到包含'{target_text}'的单元格")

# 你可以在deepest_cell中插入文本,例如:
# deepest_cell.text += "\n要插入的文本"
# doc.save("新的Word文档路径.docx")

这个脚本将会深度搜索文档中的所有表格,找到最下一层包含"修改内容"的单元格。如果找到了这样的单元格,它将存储在deepest_cell变量中。最后,你可以在deepest_cell中插入文本,然后保存为新的Word文档。确保将脚本中的路径替换为你自己的Word文档路径。

完善代码,同时加上TXT文件内容的插入

下面是一个完整的示例代码,它会找到包含"修改内容"的最下层单元格,并在其下方插入TXT文件的内容:

from docx import Document

def find_cell_with_text(table, target_text):
    for row in table.rows:
        for cell in row.cells:
            if target_text in cell.text:
                return cell

def find_deepest_cell_with_text(doc, target_text):
    for table in doc.tables:
        cell = find_cell_with_text(table, target_text)
        if cell:
            return cell
        # 如果当前表格没有目标单元格,递归搜索嵌套的表格
        for row in table.rows:
            for cell in row.cells:
                if cell.tables:
                    nested_cell = find_deepest_cell_with_text(cell, target_text)
                    if nested_cell:
                        return nested_cell

    return None

# 打开Word文档
doc = Document("你的Word文档路径.docx")

# 要查找的目标文本
target_text = "修改内容"

# 找到最下一层的包含目标文本的单元格
deepest_cell = find_deepest_cell_with_text(doc, target_text)

if deepest_cell:
    print(f"找到包含'{target_text}'的最下一层单元格")

    # 读取要插入的TXT文档内容
    with open("你的TXT文档路径.txt", "r", encoding="utf-8") as txt_file:
        txt_content = txt_file.read()

    # 在最下一层单元格下方插入TXT文档内容
    deepest_cell.add_paragraph(txt_content)

    # 保存修改后的Word文档
    doc.save("新的Word文档路径.docx")

    print("内容已插入到指定单元格下方")
else:
    print(f"未找到包含'{target_text}'的单元格")

这个代码首先会找到包含"修改内容"的最下一层单元格,然后将TXT文档的内容插入到该单元格下方。最后,保存为新的Word文档。确保将脚本中的路径替换为你自己的Word文档和TXT文档的路径。

修改Word文档中某个表格中的日期

要修改表格中的日期,你可以在找到包含日期的单元格后,使用Python的datetime库来生成新的日期,并将其替换掉原有的日期。以下是修改日期的代码示例:

from docx import Document
from datetime import datetime

def find_cell_with_text(table, target_text):
    for row in table.rows:
        for cell in row.cells:
            if target_text in cell.text:
                return cell

def find_deepest_cell_with_text(doc, target_text):
    for table in doc.tables:
        cell = find_cell_with_text(table, target_text)
        if cell:
            return cell
        # 如果当前表格没有目标单元格,递归搜索嵌套的表格
        for row in table.rows:
            for cell in row.cells:
                if cell.tables:
                    nested_cell = find_deepest_cell_with_text(cell, target_text)
                    if nested_cell:
                        return nested_cell

    return None

# 打开Word文档
doc = Document("你的Word文档路径.docx")

# 要查找的目标文本
target_text = "修改内容"

# 找到最下一层的包含目标文本的单元格
deepest_cell = find_deepest_cell_with_text(doc, target_text)

if deepest_cell:
    print(f"找到包含'{target_text}'的最下一层单元格")

    # 生成新日期
    new_date = datetime.now().strftime("%Y-%m-%d")

    # 查找日期并替换为新日期
    for paragraph in deepest_cell.paragraphs:
        if "日期:" in paragraph.text:
            paragraph.text = paragraph.text.replace("日期:", f"日期:{new_date}")

    # 保存修改后的Word文档
    doc.save("新的Word文档路径.docx")

    print(f"日期已修改为:{new_date}")
else:
    print(f"未找到包含'{target_text}'的单元格")

这个代码会查找包含"修改内容"的最下一层单元格,然后在该单元格的文本中查找日期并替换为新的日期。最后,保存为新的Word文档。确保将脚本中的路径替换为你自己的Word文档的路径。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

276_Python_桌面的一个TXT文档里的内容,插入到Word文档的指定位置 的相关文章

  • ContentDialog 未与 UWP 中心对齐

    据我所知 ContentDialog的默认行为应该是使其在 PC 上居中并在移动设备上与顶部对齐 但就我而言 即使在 PC 上我也将其与顶部对齐 但我不明白发生了什么 我正在使用代码隐藏来创建它 这是我正在使用的代码片段 Creates t
  • 将 dataGridView 中选定的行作为对象检索

    我有一堂这样的课 public partial class AdressBokPerson public long Session get set public string F rnamn get set public string Ef
  • Monotouch全局异常处理

    我在野外发现了一只令人讨厌的虫子 但我无法确定它的具体情况 有没有办法拥有全局 Try Catch 块 或者有办法处理 Monotouch 中未处理的任何异常 我可以包起来吗UIApplication Main args 在 try cat
  • Visual Studio 中列表框的上移、下移按钮[重复]

    这个问题在这里已经有答案了 我正在尝试制作一个上移按钮和一个下移按钮 以移动 Microsoft Visual Studio 2012 中列表框中的选定项目 我已经在 WDF jquery winforms 和其他一些表单中看到了其他示例
  • 如何将 Q 格式整数转换为浮点数(反之亦然)?

    我四处搜寻 找不到一个很好的问题来回答这个问题 给定一个整数 使用Q Format https en wikipedia org wiki Q number format 如何将该数字转换为普通浮点类型 反之亦然 如何将浮点类型转换为Q F
  • 控制台应用程序中使用 Unicode 字符的 _tprintf

    我正在从 Unicode 构建的控制台应用程序 使用 C 和 Visual Studio 2008 执行这个简单的输出 此代码旨在在 Windows 上运行 tprintf L Some sample string n 一切正常 但是如果我
  • 在c#中获取没有时间的日期

    我的表上有一列 缺勤日期时间 日期 当我想要获取包含日期的行时 它返回 0 行 这是我的 C 代码 DateTime ClassDate DateTime Parse lblDate Content ToString var Abs dbs
  • 单击 selenium 中的链接时循环遍历表格的行(python)

    示例页面源代码如下所示 div class div1 table class foot market tbody td class today name td tbody tbody td class today name td tbody
  • 在 C# 中使用命名空间别名有什么好处? [复制]

    这个问题在这里已经有答案了 使用命名空间别名有什么好处 仅仅是为了简化编码吗 仅当与类发生冲突时我才使用名称空间别名 对我来说 这根本没有简化 我的意见是 如果没有必要 就不要使用
  • 当需要不同数量和类型的参数时如何创建操作委托列表

    我们有一组大约两打的类 它们继承自具有抽象 Validate 方法的基类 当然 每个类都有不同的验证需求 但它们之间的不同组合需要规则 因此 正如您可以想象的那样 这导致了大量代码重复 例如 A 类需要规则 1 3 6 和 9B 类需要规则
  • 用户的完整 UNIX 用户名

    想知道您是否知道是否有一种巧妙的方法可以从 shell 获取完整的用户名 示例 如果我的 UNIX 用户名是 froyo 那么我想获取我的全名 在本例中 如系统中注册的那样 froyo Abhishek Pratap Finger 命令可以
  • Python 可以替代 Java 小程序吗?

    除了制作用于物理模拟 如抛射运动 重力等 的教育性 Java 小程序之外 还有其他选择吗 如果你想让它在浏览器中运行 你可以使用PyJamas http pyjs org 这是一个 Python 到 Javascript 的编译器和工具集
  • Django 迁移错误 'TypeError: 序列项 1: 需要一个类似字节的对象,在 mysql-connector-pythoncursor_cent.py 文件上找到 str'

    我正在 Django 项目中使用 mysql connector 来处理 mysql 请求 问题是我正在使用 django admin startproject project 设置一个简单的项目 当我尝试进行简单的管理 py 迁移时 这是
  • 选择合适的IDE

    您会推荐使用以下哪种 IDE 语言来在 Windows 下开发涉及识别手势并与操作系统交互的项目 我将使用 OpenCV 库来执行图像处理任务 之后 我将使用 win32 API 或 NET 框架与操作系统交互 具体取决于您建议的工具 性能
  • 如何将System.Windows dll添加到Visual Studio 2010 Express?

    我正在开发一个小型应用程序C and VS2010 as IDE with NET框架4 我想用CaptureSource类以便从笔记本电脑的网络摄像头捕获视频 为此我需要添加一个命名空间System Windows DependencyO
  • C 变量声明的效率 [重复]

    这个问题在这里已经有答案了 例如 在 C 中声明一个变量需要多长时间int x or unsigned long long var 我想知道它是否会让我的代码在类似的事情中更快 for conditions int var 0 code 这
  • 使用Python的线程模块调用ctypes函数比使用多处理更快?

    我一生都无法找出这个问题的答案 我编写了一个可以执行数百次繁重计算的脚本 我有一个绝妙的主意 将这些计算任务编写为 C 然后使用 Python 的 ctypes 与它们交互 我心想 我什至可以使用并行性进一步优化它 我最初的方法是使用线程
  • 为什么在构造函数中设置字段是(或不是)线程安全的?

    假设您有一个像这样的简单类 class MyClass private readonly int a private int b public MyClass int a int b this a a this b b public int
  • 实体框架代码首次日期字段创建

    我正在使用实体框架代码优先方法来创建我的数据库表 下面的代码 创建一个DATETIME数据库中的列 但我想创建一个DATE柱子 DataType DataType Date DisplayFormatAttribute ApplyForma
  • 将一个 IEnumerable 拆分为多个 IEnumerable

    我是 linq 新手 我需要根据指示器将 Couple string text bool Indicator 类型的 IEnumerable 拆分为多个 IEnumerable 我尝试使用skipWhile 和 TakeWhile 但没有找

随机推荐

  • pinia实现持久化存储

    pinia的作用是什么 Pinia 是 Vue 的存储库 它允许您跨组件 页面共享状态 如果您熟悉 Composition API 您可能会认为您已经可以通过一个简单的 export const state reactive 这对于单页应用
  • 论文笔记--Attention is all you need

    Attention is all you need transformer模型 摘要 当前的序列转录模型基于encoder和decoder的循环或卷积神经网络 较好的做法是在encoder和decoder中间加入一个注意力机制 我们提出了一
  • 使用Spyder,导入tensorflow以及相关库出现kernel died等问题的解决方法

    自从使用了Spyder之后 感觉腰不算了 腿不疼了 走路都带风了 呵呵 好吧 那是之前 使用Spyder给我的感觉就好像一台快报废的电脑重新装了系统一样 刚开始顺风顺水 可是后来就发现毕竟是老年机 容易出现个什么白内障 风湿病什么的 做一些
  • 离散数学:数学语言与证明方法(练习题)

    练习1 1 判断下列命题是真是假 1 x x 答 假 x 并不是 x 元素 2 x x 答 真 x 是 x 子集 3 x x 答 真 x 是 x 元素 4 x x 答 假 x 不是 x 子集 5 x 答 真 是 x 元素但不是任何集合元素
  • SpringBoot:构建一个SpringBoot项目

    文章目录 一 创建项目 1 点击 File gt Project 2 选择 Spring Initializr 3 填写项目基本信息 5 目录结果 6 pom xml 依赖 7 主函数入口 二 项目启动 测试 三 项目源码 SpringBo
  • MongoDB常见问题

    问题一 还原报错 root mongodb bin mongorestore h 127 0 0 1 27017 d runoob directoryperdb data db runoob 2022 12 19T19 47 23 909
  • [LeetCode-21]-Merge Two Sorted Lists(有序列表合并)

    文章目录 题目相关 Solution 不带头结点 增加头结点 使用递归 题目相关 题目解读 合并两个有序列表 并返回新列表 原题描述 原题链接 Merge two sorted linked lists and return it as a
  • 合并两个有序表到新的有序表

    系列目录 左右移动 旋转 数组元素 查找两个升序数组的中间数 判断数组的某一个元素的数量是否超过了整个数组数量的一半 文图介绍 将有序数组A和有序数组B合并得有序数组C A 1 2 3 4 5 B 2 3 4 5 6 C 1 2 2 3 3
  • java什么时候用异常_深入理解Java异常的使用场景

    最近在项目代码中 遇见异常滥用的情形 分析下会带来哪些后果 1 代码可读性变差 业务逻辑难以理解 异常流与业务状态流混在一起 无法从接口协议层面理解业务代码 只能深入到方法 Method 内部才能准确理解返回值的行为 可看一下代码 publ
  • 如何计算留存率(Hive Sql or Spark sql)

    在互联网行业中 用户在某段时间内开始使用应用 经过一段时间后 仍然继续使用该应用的用户 被认作是留存用户 这部分用户占当时新增用户的比例即是留存率 会按照每隔1单位时间 例日 周 月 来进行统计 顾名思义 留存指的就是 有多少用户留下来了
  • unistd.h文件

    转载地址 http baike baidu com link url nEyMMFYevs4yoHgQUs2bcfd5WApHUKx0b1ervi7ulR09YhtqC4txmvL1Ce3FS8xTKtWQuvmEBHC9xezMGpvGH
  • valgrind 在开发板上运行以及使用

    前言 bedug无处不在 今天花落我家 现象 一个月出现一次异常 难易复现排查 借助神器valgrind排查 1 下载及编译准备 下载地址 https www valgrind org tar jxvf valgrind 3 16 1 ta
  • java实用类之正则工具类

    正则工具类 public class PatternUtil 匹配邮箱正则 private static final Pattern VALID EMAIL ADDRESS REGEX Pattern compile A Z0 9 A Z0
  • EL文件上传

    一 通过时间修改与文件上传 weixin 43985399的博客 CSDN博客查询并添加相应的文件 二 编辑前端页面
  • [操作系统]3.内存管理

    和前面两篇是差不多的思路 仅为快速复习操作i系统基础知识点 例题暂无 考试不要参考 知识点来自王道操作系统 1 内存管理的基本要求和设定 内存管理主要完成的功能有 内存空间的分配和回收 地址转换 把逻辑地址转化为内存物理地址 内存空间的扩充
  • LUT学习了解

    知乎 LUT Lookup Table 颜色查找表 通过LUT可以将一组RGB值输出为另一组RGB值 从而改变画面的曝光与色彩 如果我们规定 当原始R值为0时 输出R值为5 当原始R值为1时 输出R值为6 当原始R值为2时 输出R值为8 当
  • Android开机服务启动流程

    在Android系统启动时候 会解析init rc文件 然后根据里面的定义 启动各种服务 如netd zygote servier manager等等 但这些服务之间其实是有依赖关系的 而且当其中的某个服务启动失败时 有时候会影响后续的服务
  • 火爆!GitHub 标星 144k 的前后端学习路线,2021 年最新整理,看完后不再迷茫不再徘徊

    正在光顾 CSDN 的你 好呀 我是沉默王二 上周在欣赏阮一峰老师的 科技周刊 时 发现了一个牛逼的学习路线 在 GitHub 上已经标星 144k 了 简直火爆 里面不仅涵盖了前端和后端的学习路线 还有运维的学习路线 作为一名程序员 如果
  • 计算机组成原理实验一报告——运算器

    一 实验目的 了解和掌握Am2901运算器的组成结构和工作原理 认识和掌握TEC 2机运算器的组成和工作原理 认识和掌握TEC 2机运算器相关控制信号的含义和使用方法 二 实验原理 Am2901运算器 1 Am2901 芯片内部组成结构 A
  • 276_Python_桌面的一个TXT文档里的内容,插入到Word文档的指定位置

    在当前Word文档的第几段插入内容 当你需要将一个TXT文档的内容插入到Word文档的特定位置时 你可以使用Python的docx库来处理Word文档 以及内置的文件操作功能来读取TXT文档 首先 确保你已经安装了docx库 如果没有 可以