使用python从excel文件自动填写word.docx

2024-09-29 21:25:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经用Python教科书和视频教程完成了一半的无聊工作,但是我有一个大项目需要自动生成60个化学采购审核文档,我们似乎找不到这些文档。与其单独填写,我想用我目前所学的知识。我不得不在几章中跳到前面,但我似乎不知道如何越过最后一行代码。 基本上,我有一个excel电子表格,其中有四列信息需要输入到word文档表单模板的某些区域中。 我在单词doc中有“AAAA,BBBB…”作为一个可以找到和替换的东西。在

import openpyxl,os,docx,re

os.chdir(r'C:\Users\MYUSERNAME\OneDrive\Documents\Programming\ChemInv')

wb = openpyxl.load_workbook('cheminv.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
doc = docx.Document('ChemPurchaseForm_.docx')
fillObj = ('AAAA','BBBB','CCCC','DDDD')

for a in range(1,61):
    for b in range(1,5):
        fill = sheet.cell(row=a,column=b).value
        for x in range(len(fillObj)):
            inputRegex = re.compile(fillObj[x])
            inputRegex.sub(fill,doc)

        doc.save('ChemPurcaseForm_' + fill + '.docx')   

我得到了这个错误:

^{pr2}$

我假设“fill”变量或“doc”变量不是二进制或字符串值?在

提前感谢您的帮助!在


Tags: in文档refordocosrangefill
1条回答
网友
1楼 · 发布于 2024-09-29 21:25:37

要调试它,您需要找出哪些值不是二进制值或字符串值。一种方便的方法是开始为每个值添加print语句。例如,你可以试试

print(fill)
print(doc)
print(type(fill))
print(type(doc))

我不知道docx模块是如何工作的,但我有两个假设:

  1. doc不是sub函数的适当类型;您必须将对象强制转换为其他类型,或者在这种情况下以不同的方式访问它。在
  2. fill是{}。这更容易解决,这意味着你没有正确读取Excel文档。在

在阅读docx文档时,我倾向于1,因为它看起来不像是一个字节或字符串对象,也不是一个字节或字符串兼容的对象,因此sub方法将无法对其进行正确操作;如果这是正确的,请阅读python docx文档以获取更多细节,以帮助您确定需要做什么。我想探究一下你的文档中有哪些属性,似乎有一些属性可以直接访问文本。在

祝你好运!在

相关问题 更多 >

    热门问题