网站文字设计,浙江网站建设平台,网站做点线表格,wordpress 账号插件问题背景
用apache-poi生成word文件中表格#xff0c;在使用python-docx库解析时报错#xff1a; 问题分析
1. word文档本质上是一个rar压缩包#xff0c;用winrar解析后如下#xff1a; 2. 查看document.xml#xff0c;可以看到table元素下面是没有w:tblGrid这…问题背景
用apache-poi生成word文件中表格在使用python-docx库解析时报错 问题分析
1. word文档本质上是一个rar压缩包用winrar解析后如下 2. 查看document.xml可以看到table元素下面是没有w:tblGrid这个元素的
3. 用python-docx生成一个带表格的word文件同样解压打开document.xml可以找到w:tblGrid这个元素 4. 问题就在这个w:tblGrid了POI默认不会生成这个元素。 解决办法
1. 我试过在POI生成的文档强行加上w:tblGrid元素然后再压缩成rar结果根本打不开这说明word文档是一种特殊的rar一旦解压可能就会丢失一些关键数据这个办法行不通。
2. 然后查了一下POI的方法发现POI本身可以通过CTTbl来设置高级属性。
3. 这样问题就简单了通过CTTbl给表格加上一个CTTblGrid然后给每列加一个假的宽度就行了像这样
CTTbl ctTbl table.getCTTbl();CTTblGrid tblGrid ctTbl.getTblGrid();if (tblGrid null) {tblGrid ctTbl.addNewTblGrid();for (int i 0; i 5; i) {CTTblGridCol ctTblGridCol tblGrid.addNewGridCol();ctTblGridCol.setW(1000);}}
4. 问题解决。