python - 渲染生成docx文档

查看:179
本文介绍了python - 渲染生成docx文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

做了项目填报的应用,需要导出docx文件进行打印或者存档,导出的需要和原始的docx类似(之前是在纸上填饱的,现在做成线上),原始的docx很长很多,差不多有30页面。
现在的想法是在原始的文档上面预留一些模板标签,然后后台根据标签替换来生成正确的文档供用户导出。
比如文档的模板有可能是下面这样子的:

红色框里面的就是写的两个标签(用{}来表示标签),后台渲染了之后自动体会成实际的值。
目前用python-docx来做基本上能够实现,但是速度太慢了,比较复杂的文档,差不多5秒钟才能渲染好一页。
还有个问题是,有的地方还涉及到二维的表格,比如下面这种,可能涉及到需要用循环来渲染:

这方面有没有做过的前辈,给个思路或者方向,谢谢。

解决方案

恰好之前做过一个跟你类似的项目,需求也类似,不过我是用Java写的,思路可以给你分享下。

Docx文件本质上是一个压缩包,你把后缀名 .docx 改成 .zip 就可以用普通压缩文件打开了,可以看到里面有一个 documents.xml 的文件,word的核心数据就是放在这个文件里面的,包括你的替换符 {replace} 等。

所以,我们的思路就是按照压缩文件一样来读取word中的 documents.xml 的文件,然后做替换操作。关于python读取压缩文件,可以参考这篇文章:《python读写zip格式文件》,你可以尝试从这个角度试试看,或许可以快一些。我们当时处理的word文件有100多页,花了2~3秒左右替换好,这个时间还包括了从Excel中读取数据源的时间哦。

这篇关于python - 渲染生成docx文档的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆