将Excel表格的数值复制到Word文档中的表格

0 投票
1 回答
43 浏览
提问于 2025-04-14 16:00

我刚接触Python,想把Excel表格里的数据复制到Word表格里。

这是我的代码:

import pandas as pd
from docx import Document
from docxtpl import DocxTemplate
from pathlib import Path

base_dir = Path(__file__).parent
word_template_path = base_dir / "WordTemplate.docx"
excel_path = base_dir / "ExcelSource.xlsx"
output_dir = base_dir / "OUTPUT"

# Create output folder for the word document
output_dir.mkdir(exist_ok=True)

# convert Excel Sheet Into Pandas Dataframe
df = pd.read_excel(excel_path, sheet_name="Feuil2")

# dataframe to dictionary
sda = df.to_dict("records")
doc = Document("WordTemplate.docx")
#get the first table in the document
Table = doc.tables[0]

for rows in Table.rows:
    for cells in rows.cells:
        Dictionary = {
            rows.cells[0]: sda["ORDER"],
            rows.cells[1]: sda["ITEM"],
            rows.cells[2]: sda["Q1"],
            rows.cells[3]: sda["Q2"],
            rows.cells[4]: sda["PRICE"],
            rows.cells[5]: sda["TVA"],
            rows.cells[6]: sda["TOTAL"],
         }

我试着创建一个字典,每个键对应Excel表格中的一行单元格,但在这部分我遇到了困难:

Traceback (most recent call last):
  File "C:\Users\wewsos\Desktop\Folders\New folder\New folder (9)\PythonTest\fufu\ha.py", line 26, in <module>
    rows.cells[0]: sda["ORDER"],
                   ~~~^^^^^^^^^
TypeError: list indices must be integers or slices, not str

1 个回答

0

sda 是一个字典的列表,而不是一个单独的字典,所以你需要逐个处理它。

而且你不需要去遍历 rows 中的每个单元格,因为你已经用 rows.cells[0] 来直接获取了它。

for rows, item in zip(Table.rows, sda):
    Dictionary = {
        rows.cells[0]: item["ORDER"],
        rows.cells[1]: item["ITEM"],
        rows.cells[2]: item["Q1"],
        rows.cells[3]: item["Q2"],
        rows.cells[4]: item["PRICE"],
        rows.cells[5]: item["TVA"],
        rows.cells[6]: item["TOTAL"],
     }

撰写回答