使用python-docx + python-docx-template创建的Word .docx产生错误

时间:2018-08-06 19:52:47

标签: python ms-word python-docx

我正在使用python-docxpython-docx-template来生成多页文档。 MacOS和Windows上的Word都抱怨所生成的.docx文件中存在错误,但是如果允许继续操作,Word 可以打开该文件,并且文档看起来不错打开时。 (在MacOS上,错误对话框显示为“ HRESULT 0x80004005 Location:Part:/word/document.xml,第0行,第0列”。)

.docx模板是一个非常简单的一页文档。构造复合文档的循环基于an answer to another question,它是以下简单的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')

替换为模板的值是没有特殊字符的UTF-8字符串(尤其是,没有“&”号或大于/小于字符的字符)。我已经验证问题不是由于字符串值被替换为模板。

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

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

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

0 个答案:

没有答案