import docxfrom openpyxl import Workbook# 打开 Word 文件doc = docx.Document('example.docx')# 创建 Excel 文件和工作表wb = Workbook()ws = wb.active# 遍历 Word 文档中的表格,并将数据写入 Excel 文件中for table in doc.tables: for i, row in enumerate(table.rows): for j, cell in enumerate(row.cells): ws.cell(row=i+1, column=j+1, value=cell.text)# 保存 Excel 文件wb.save('example.xlsx')
时间: 2024-03-07 12:52:56 浏览: 143
这段代码是用 Python 中的 openpyxl 和 python-docx 库来实现将 Word 文档中的表格数据写入到 Excel 文件中的代码。首先使用 docx 库打开指定的 Word 文件,然后使用 openpyxl 库创建一个 Excel 文件和工作表。接着遍历 Word 文档中的每个表格,将每个单元格的文本内容写入到 Excel 文件对应的单元格中。最后保存 Excel 文件即可。
相关问题
修改代码,指定保存路径:import os # 系统模块,用于文件重命名 import openpyxl # Excel文件操作模块 from docx import Document # Word文件操作模块 # 打开工作簿和文档 wb = openpyxl.load_workbook(r'G:\工作文件\产业办\2022年\产业帮扶\产业奖补\3.经营主体奖补\汇总:紫阳县2023年经营主体奖补汇总表.xlsx') # 打开Excel文件,存储在wb中,可更改。 ws = wb['实施方案'] # 读取工作簿“实施方案”中的数据,可更改。 doc = Document('实施方案.docx') # 打开Word文件,存储在doc中,可更改。
修改后的代码如下,使用os模块指定保存路径:
```python
import os
import openpyxl
from docx import Document
# 指定保存路径
save_path = r'G:\工作文件\产业办\2022年\产业帮扶\产业奖补\3.经营主体奖补\'
# 打开工作簿和文档
wb = openpyxl.load_workbook(r'G:\工作文件\产业办\2022年\产业帮扶\产业奖补\3.经营主体奖补\汇总:紫阳县2023年经营主体奖补汇总表.xlsx')
ws = wb['实施方案']
doc = Document('实施方案.docx')
# 对Excel文件和Word文件进行操作
# ...
# 保存Excel文件
wb.save(os.path.join(save_path, '汇总:紫阳县2023年经营主体奖补汇总表.xlsx'))
# 保存Word文件
doc.save(os.path.join(save_path, '实施方案.docx'))
```
其中,os.path.join()方法可以将多个路径组合成一个完整的路径,并自动添加适当的分隔符。这里使用该方法将文件名和保存路径合并。
为什么这串代码替换不了obj的内容。from openpyxl import load_workbook from docx import Document # 打开 Excel 文件 wb = load_workbook('data.xlsx') ws = wb.active # 打开 Word 模板文件 document = Document('template.docx') # 遍历 Excel 表格并填充 Word 模板 for row in ws.iter_rows(min_row=2, values_only=True): name, obj = row # 复制模板段落并插入数据 new_paragraph = document.add_paragraph() for run in document.paragraphs[0].runs: new_run = new_paragraph.add_run(run.text) if '{{name}}' in run.text: new_run.text = new_run.text.replace('{{name}}', name) elif '{{obj}}' in run.text: new_run.text = new_run.text.replace('{{obj}}', obj) # 保存 Word 文档 document.save('output.docx')
这段代码可以替换 `name` 的内容,但无法替换 `obj` 的内容是因为 `obj` 可能是一个元组或列表,而这些类型无法直接传递给 `new_run.text` 方法。解决方法是将 `obj` 转换为字符串,例如使用 `str()` 函数。修改后的代码如下:
```
from openpyxl import load_workbook
from docx import Document
# 打开 Excel 文件
wb = load_workbook('data.xlsx')
ws = wb.active
# 打开 Word 模板文件
document = Document('template.docx')
# 遍历 Excel 表格并填充 Word 模板
for row in ws.iter_rows(min_row=2, values_only=True):
name, obj = row
# 复制模板段落并插入数据
new_paragraph = document.add_paragraph()
for run in document.paragraphs[0].runs:
new_run = new_paragraph.add_run(run.text)
if '{{name}}' in run.text:
new_run.text = new_run.text.replace('{{name}}', name)
elif '{{obj}}' in run.text:
new_run.text = new_run.text.replace('{{obj}}', str(obj))
# 保存 Word 文档
document.save('output.docx')
```
阅读全文