java poi生成的word表格在wps中的显示问题

  • 问题描述:
    • poi导出的word文档使用office打开效果正常:
    • poi导出的word文档使用wps打开效果异常:
  • 问题分析:
    • 1.怀疑是合并单元格问题
    • 2.继续对比document.xml查找蛛丝马迹
  • 最终解决办法:
    • 1.首先poi创建完表格后,设置表格宽度类型为PCT,设置默认宽度为4940
    • 2.根据列数,设置每列宽度

问题描述:

poi导出的word文档使用office打开效果正常:

poi导出的word文档使用wps打开效果异常:

问题分析:

1.怀疑是合并单元格问题

在桌面手动创建office文件,添加以上表格,保存后使用wps打开,发现格式与office一致,没有什么异常。怀疑是程序使用了过时的api,wps不支持某些word标签,分析过程如下:

1.1 将刚才手动创建的.docx的word文件扩展名改为.zip,用压缩软件打开zip文件,找到document.xml。

1.2 打开document.xml文件

1.3 同样的步骤,把我自己通过poi生成的word文档改成zip文件,打开document.xml

1.4 对比看一下两个xml文件,发现了很多区别,合并单元格确实是使用了不同的标签,poi我是使用hMerge做的合并单元格,而手动创建的office word文档使用的时gridSpan

poi合并单元格代码是在网上抄的,如下:

     public static void mergeHorizontal(XWPFTable table, int row, int startCell, int endCell) {for (int i = startCell; i <= endCell; i++) {XWPFTableCell cell = table.getRow(row).getCell(i);if (i == startCell) {// The first merged cell is set with RESTART merge value  cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);} else {// Cells which join (merge) the first one, are set with CONTINUE  cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);}}}

1.5 尝试使用 cell.getCTTc().getTcPr().getGridSpan().setVal(“合并列数”) 替换了HMerger,并删除多余列。最终效果和之前一样,office打开正常,wps打开还是老样子,白折腾一圈,看来不是这个问题。

2.继续对比document.xml查找蛛丝马迹

2.1 发现手动创建的office word的表格宽度都是按固定值设置的,而且设置了每列宽度,我使用poi设置的表格宽度是百分比,且没有具体的设置每列宽度。

2.2 在poi中加入设置每列宽度,按固定值设置表格宽度之后,解决了问题。

最终解决办法:

1.首先poi创建完表格后,设置表格宽度类型为PCT,设置默认宽度为4940

2.根据列数,设置每列宽度

java poi生成的word表格在wps中的显示问题相关推荐

  1. java poi 动态导出word表格带合并效果

    1.引入word导出所需依赖包 工作常用的excel,word导出,需要引入下面的6个主要包,和主要包依赖的其他包 ,可以看下面的表格进行依赖下载引入 这下面的两张图是主要包对应涉及到功能,可以按需要 ...

  2. java读取word文档的复杂表格_poi读取word表格 java POI 如何读取word的表格中的表格...

    poi 操作word 2007 (如何删除word中的某一个表格)小编忘了哪年哪月的哪日小编在哪面墙上刻下张脸张微笑着忧伤着凝望小编的脸. public static void changeTable ...

  3. Java POI 生成Word文档

    在开发中有时候我们需要导出 word文档.最近因为需要做一个生成word文件的功能.就将这块拿出来和大家分享. 生成word文件和我们写word文档是相同的概念,只不过在这里我们换成了用代码来操作.下 ...

  4. python生成的word表格设置内容居中

    python生成的word表格设置内容居中 python生成的word表格设置内容内容默认左对齐,生成的表格不美观可以使用一下代码将内容居中 需要导入的库 from docx.enum.table i ...

  5. 解决Word跨页表格在WPS中显示不全(转)

    解决Word跨页表格在WPS中显示不全(转) Word跨页表格在WPS中会出现显示不全的现象.根据DOC文档中表格的不同(行列分布规则的表格:行列分布不规则的表格),解决此类问题要分两种情况: 一.处 ...

  6. word表格分开快捷键_在Word 表格的编辑中,快速拆分表格应按快捷键为______。

    [单选题]在Word文档中,如果要指定每页中的行数,可以通过_____进行设置. [简答题]要求把任务点的所有课程笔记都上传,拍照上传. [单选题]在Word文档中,有一个段落的最后一行只有一个字符, ...

  7. JAVA POI 导出EXCEL时,EXCEL模板中的公式无效问题

    JAVA POI 出力EXCEL时,EXCEL模板中的公式无效问题 工作中遇到一个问题. EXCEL模板有两个sheet,画面内容要导出到第二个sheet中,第一个sheet设置公式,读取第二个she ...

  8. java poi生成word

    java中使用poi生成word 项目当中需要后端生成word,当中包含表格,折线图,文字等内容,顺手写了一个工具类,分享一下,欢迎大佬批评指正 先上pom <poi.version>4. ...

  9. 解决java poi生成word文件格式错误的问题。

    一.问题: 二.希望的样式 三.解决思路 当生成的排版格式不是你想要的样式,那么就在现在生成的word上面进行排版操作,看它还需要什么操作可以变成你想要的排版格式,弄好之后,去找相关操作的代码.这就是 ...

最新文章

  1. Linux文件管理命令vi,linux人云亦云(16)文件管理之VI命令一
  2. [原创]一起来做网页游戏---前言
  3. Python用selenium获取cookie以后给rqeuests使用。
  4. 百度地图-矩形编辑的模拟实现
  5. web站点性能测试经验点滴
  6. c/c++面试试题(一)
  7. 计算机科技与技术对应岗位,计算机技术与软件专业技术资格名称及岗位基本任职条件...
  8. 【OpenCV】OpenCV实战从入门到精通之 -- 访问图像中的像素
  9. 自动化的NSX网络交付
  10. 近期14个“AI产品经理”职位JD推荐(覆盖北京、上海、深圳、成都、重庆、杭州)
  11. android viewpage 代码添加view,百行代码实现Android ViewPage指示器
  12. 计算机网络一般包括资源子网和什么两部分,一个计算机网络一般包括什么和通信子网两部分...
  13. 【高速接口-RapidIO】5、Xilinx RapidIO核例子工程源码分析
  14. 信号处理之FIR数字滤波器(Matlab仿真)
  15. biosrecovery什么意思_recovery是什么意思
  16. 《Neo4j权威指南》简介,求伯君、周鸿袆、胡晓峰、周涛等大咖隆重推荐
  17. IMX6ULL_PRO嵌入式开发板介绍
  18. [bzoj3203][SDOI2013]保护出题人
  19. 树莓派4B——Ubuntu20.04 mate
  20. C++逆向安全教程150全集---2020年木塔老师新教程

热门文章

  1. 基于深度学习lstm_深度学习和基于LSTM的恶意软件分类
  2. Java顺序栈的初始化_java - Java类变量初始化的顺序是什么? - 堆栈内存溢出
  3. php ldap目录协议,PHP 通过LDAP协议,操作Windows Active Directory
  4. 为下属提供支持性沟通
  5. 【文献阅读】Fixed-Point-GAN,不动点GAN(2019,ICCV)
  6. Linux ❀ KickStart-无人值守部署
  7. C++ MFC万能的类向导
  8. C 鬼吹灯之龙岭迷窟 SDUT
  9. 数据预处理第6讲:正态变换
  10. 维睿互动|硬核干货!Google广告拒登原因及解决方法汇总