关于python半自动化编写报告踩坑记录

记录

一开始我也是想着利用python-docx来替换修改指定内容的,但是使用其替换会导致文字格式消失,而我需要保留格式,网上找的脚本也能成功一半,一半是因为表格内的内容没法保留格式。

后来想到docx文件可以转化为zip文件解压出源文件,之后主要就对其中的 word/document.xml文件进行关键字替换就行了,替换可整个txt文件,读取其中内容来替换。

但有一个注意事项就是,你的关键字如果是在docx文档内编辑的,比如我编辑了一个test_name,那么就会在document.xml中显示为:

</w:r w:rsidR="xxxxx"><w:t>test_name</w:t></w:r>

而一旦你分2次保存,第一次保存test第二次添加_name再保存,那么在document.xml中搜索该关键词会搜不到,因为它在其中显示为:

<w:r w:rsidR="xxxxx"><w:t>test</w:t></w:r><w:r w:rsidR="xxxx"><w:t>_name</w:t></w:r>

w:rsidR的描述是这样的:

指定唯一一个标识符,用来跟踪编辑在修订时表行标识,所有段落和段落中的内容都应该拥有相同的属性值,如果出现差异,那么表示这个段落在后面的编辑中被修改。

具体可参考:
word xml 各个标签含义

所以在编写模板时候需要一次性写好这个单词,另外注意英文他会在开始时候第一个字母大写,我没尝试暂不清楚它是否会生成rsidR,我直接全部英文第一个字母大写的。。。

至于页头页尾的话,搜下关键字就知道在header*.xml、footer*.xml文件里。

然后就是树状图之类的,在word中可以对其编辑数据,从而替换树状图中内容,在word/charts/chart*.xml文件里,有类似于Sheet1!$B$1这样的,在其下边有一些数据,对应着树状图中的,自己摸索一下就知道。这里有个问题就是,我修改后保存,生成docx打开,确实树状图内容修改了,但如果我再次编辑数据,里面内容是未修改的,然后就恢复成原来的了。。。

最后就是压缩了,压缩借鉴大佬的方法即可
python zipfile修改docx并保存

注:直接用压缩包压缩,我用360压缩再改docx会报错,其他不清楚

猜你喜欢

转载自blog.csdn.net/qq_40519543/article/details/121991598