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

如何解决用win32将DataFrame写入Word时的gencache属性报错问题

问题原因

你当前使用的导入语句错误,pywin32库的gencache模块归属win32com包,不属于顶层win32包,你导入的win32和win32api没有包含对应模块,所以调用win32.gencache会触发属性不存在的报错。除此之外你的代码还有两处潜在问题:一是没有导入用到的os模块,二是for循环存在多余缩进,后续运行也会报错。

解决步骤
  • 先确认已经安装pywin32依赖,未安装可执行命令:
pip install pywin32
  • 修正导入语句,替换错误的导入逻辑:
import os
import win32com.client as win32
  • 删除for循环前多余的缩进,避免触发缩进错误
  • 操作完成后新增保存、关闭文档和退出Word进程的逻辑,避免后台残留WINWORD进程占用资源
修正后完整参考代码
import os
import win32com.client as win32
import pandas as pd

# 此处替换为你自己的DataFrame生成逻辑
df = pd.DataFrame()

wordApp = win32.gencache.EnsureDispatch('Word.Application')
wordApp.Visible = False
# 用os.path.join拼接路径兼容性更好
doc = wordApp.Documents.Open(os.path.join(os.getcwd(), 'template.docx'))
rng = doc.Bookmarks("PUTTABLEHERE").Range

# 创建表格,行数为DataFrame行数+1(预留表头)
Table = rng.Tables.Add(rng, NumRows=df.shape[0]+1, NumColumns=df.shape[1])

for col in range(df.shape[1]):        
    # 写入表头
    Table.Cell(1, col+1).Range.Text = str(df.columns[col]) 
    for row in range(df.shape[0]):
        # 写入表格内容
        Table.Cell(row+2, col+1).Range.Text = str(df.iloc[row, col]) 

# 收尾操作
doc.Save()
doc.Close()
wordApp.Quit()

内容的提问来源于stack exchange,提问作者Rob de Leeuw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:06:00