使用python docx+;PythonDocx模板会导致eror

使用python docx+;PythonDocx模板会导致eror,python,ms-word,python-docx,Python,Ms Word,Python Docx,我正在使用和生成多页文档。MacOS和Windows上的Word都抱怨生成的.docx文件有错误,但是如果允许继续,Word可以打开该文件,并且打开时文档看起来很好。(在MacOS上,错误对话框显示“HRESULT 0x80004005位置:零件:/word/document.xml,第0行,第0列”) .docx模板是一个非常简单的单页文档。构建复合文档的循环基于以下简单的Python代码: overall_doc = Document() num_pages = len(records_li

我正在使用和生成多页文档。MacOS和Windows上的Word都抱怨生成的
.docx
文件有错误,但是如果允许继续,Word可以打开该文件,并且打开时文档看起来很好。(在MacOS上,错误对话框显示“HRESULT 0x80004005位置:零件:/word/document.xml,第0行,第0列”)

.docx
模板是一个非常简单的单页文档。构建复合文档的循环基于以下简单的Python代码:

overall_doc = Document()
num_pages = len(records_list)
for index, record in enumerate(records_list):
    page = DocxTemplate(template)
    values = vars(records_list[index])
    page.render(values)
    if index < (num_pages - 1):
        page.add_page_break()
    for element in page.element.body:
        overall_doc.element.body.append(element)
overall_doc.save('outputfile.docx')
总体文档=文档()
num\u pages=len(记录列表)
对于索引,在枚举中记录(记录列表):
page=DocxTemplate(模板)
值=变量(记录列表[索引])
页面渲染(值)
如果索引<(页数-1):
page.add_page_break()
对于page.element.body中的元素:
总体文档元素正文追加(元素)
整体文档保存('outputfile.docx')
被替换到模板中的值是UTF-8字符串,没有特殊字符(特别是没有符号或大于/小于字符)。我已经验证了问题不是由于字符串值被替换到模板中

如果在创建第一页后中断循环,则不会产生错误结果。如果允许循环仅创建2页,则Word中会出现错误。如果我完全删除分页符代码,错误仍然会发生。如果在末尾添加额外的分页符,错误仍然会发生

我试图找到一个docx验证工具。我唯一能够运行的是的
openmaincumentandtraverse
函数,据我所知,它应该会报告错误。但是docx4j不会报告输出文档中的任何错误


什么可能导致此错误?如果我的错误不明显,我如何诊断Word抱怨的原因?

OpenXMLSDK生产力工具将允许您检查zip包的XML。我不知道您使用的语言,但在我看来,您的循环可能正在插入身体元素?如果是,这就是问题所在-文档中只能有一个body元素。@Cindymister谢谢。语言是Python(这个问题用Python标记,但是我会编辑这个问题,在文本中提到它)。恐怕我不熟悉在Windows上编译,也无法构建OpenXMLSDK生产力工具–是否有现成的运行版本?最后,主体元素被附加到;代码没有添加新的主体。很抱歉误解:我的意思是我不懂Python(-docx),所以当我查看您的代码时,我不确定看到了什么。生产力工具可以从微软网站下载,寻找SDK版本2.5——已经构建好了。您可以将代码的结果与Word修复的版本进行比较,以查看它们之间的差异。(拍脑袋)我不敢相信我没有想到将结果与修复的文件进行比较。谢谢,我会的。opc-diag是一个纯Python(在任何东西上运行)开放式XML包检查器:。这就是我们在PythonDocx和PythonPPTX项目中用来研究.docx和.pptx文件的内容,并且具有一些比较特性。