You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python-docx实操问题:如何将pandas表格插入Word文档指定位置

实现Word模板指定位置插入Pandas生成表格的方案

核心逻辑:python-docx 中文档内的所有元素(段落、表格等)按顺序存储在文档的XML结构中,只要精准定位插入位置的锚点元素,即可将新表格插入到两个已有表格中间,完全避免内容重叠。

前置准备

  • 提前确认你要插入新表格的位置:例如要插在模板第1个和第2个预置表格之间,锚点就是第1个表格,对应索引为0(docx内表格索引从0开始计数)
  • 依赖库提前安装:pip install python-docx pandas

完整实现代码

from docx import Document
from docx.shared import Pt
import pandas as pd

# 1. 读取你已有的带预置表格的Word模板,不是新建空白文档
doc = Document("你的模板文件路径.docx")

# 2. 准备要插入的Pandas表格数据
pandas_table = pd.DataFrame({'Name':['John','Paul'],'Age':[25,40]})

# 3. 配置插入位置:这里以插入到第1个和第2个预置表格之间为例,锚点表格索引为0
# 如果你要插在第N和第N+1个表格之间,把下方值改为N-1即可
target_table_index = 0
anchor_table = doc.tables[target_table_index]

# 4. 创建新表格对象
new_table = doc.add_table(pandas_table.shape[0]+1, pandas_table.shape[1])
new_table.style = 'Table Grid'

# 5. 填充表头
for j in range(pandas_table.shape[1]):
    new_table.cell(0,j).text = pandas_table.columns[j]

# 6. 填充表格内容
for i in range(pandas_table.shape[0]):
    for j in range(pandas_table.shape[1]):
        new_table.cell(i+1,j).text = str(pandas_table.values[i,j])

# 7. 统一设置表格字体
for row in new_table.rows:
    for cell in row.cells:
        for paragraph in cell.paragraphs:
            for run in paragraph.runs:
                run.font.name = 'Calibri'
                run.font.size = Pt(10.2)

# 8. 核心插入逻辑:将新表格插入到锚点表格的后面
# 先插入一个空段落,避免新表格和前后的预置表格自动合并
p = anchor_table._element.addnext(doc.add_paragraph()._element)
# 再把新表格插到空段落后面
p.addnext(new_table._element)

# 9. 保存文档
doc.save('保存的文件路径.docx')

关键注意事项

  • 若不确定锚点表格的索引,可以先运行print(len(doc.tables))查看模板内总表格数,再遍历打印每个表格的首行内容确认对应索引
  • 插入的空段落可以按需调整格式,比如设置段前段后间距来控制表格之间的留白
  • 不要修改模板内原有预置表格的结构,否则会导致索引定位偏差

内容的提问来源于stack exchange,提问作者MichKats

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:15:04