POI导出word表格 office打开没问题 wps打开列有问题

  • 模板样式
    • 导出文档office打开
    • wps打开文件
    • 1.给表格设置宽,指定宽度
    • 2.将布局固定
    • 3.动态设置单元格的宽度
    • 4.重点设置CTTblGrid的宽度!!!

使用POI导出文档,文档中有表格,且表格的列是动态添加。生成的文档,使用office打开没问题,但是使用wps打开,表格生成的列被挤压。

模板样式

导出文档office打开

wps打开文件

1.给表格设置宽,指定宽度

        table.getCTTbl().getTblPr().getTblW().setType(STTblWidth.DXA);table.getCTTbl().getTblPr().getTblW().setW(new BigInteger("10206"));

2.将布局固定

        CTTblPr tblPr = table.getCTTbl().getTblPr() == null ? table.getCTTbl().addNewTblPr() : table.getCTTbl().getTblPr();CTTblLayoutType t = tblPr.isSetTblLayout() ? tblPr.getTblLayout() : tblPr.addNewTblLayout();t.setType(STTblLayoutType.FIXED);//使布局固定,不随内容改变宽度

3.动态设置单元格的宽度

 //获取表格第一行XWPFTableRow rowM = table.getRow(0);//循环第一行中的每一列设置每列的宽度for (int num = 0; num < rowM.getTableCells().size(); num++) {XWPFTableCell sourceTableCell = rowM.getTableCells().get(num);CTTcPr ctTcPr = sourceTableCell.getCTTc().isSetTcPr() ? sourceTableCell.getCTTc().getTcPr() : sourceTableCell.getCTTc().addNewTcPr();CTTblWidth ctTblWidth = ctTcPr.getTcW();ctTblWidth.setType(STTblWidth.DXA);if (num == 0) {//第一个单元格固定宽度ctTblWidth.setW(BigInteger.valueOf(1701));} else {//后面的单元格根据数量平均分配ctTblWidth.setW(BigInteger.valueOf(8505 / resultList.size()));}}

注意事项

  1. 设置单元格和列表宽度时单位为:Twip中文译为"缇";
  2. 一公分则相当于567 Twips
  3. 上面1701相当于三公分

4.重点设置CTTblGrid的宽度!!!

以上设置完成后,在office打开是没问题的,但是wps打开出现问题,找了很多资料都没说出迷蒙蒙却的问题所在。在比对文件内部xml发现问题所在:

  1. 将生成的文件docx的后缀名改为zip,用压缩把将文件解压;

  2. 打开解压后的文件D:\Test\1\word, 找到document.xml;

    3.将文件document.xml打开,比对里面单元格的宽度,找到问题所在。设置的table的宽度为10206,type为dxa,布局方式也是fixed,这些都没问题,包括下边行中单元和的宽度1701、2835、2835…这个宽度也没问题,单单问题是出现在了tblGrid在这四个单元格的宽度就不是设置的宽度,第二个单元格的宽度变为7984,这就导致后面单元格的宽度被压缩,所以要解决此问题,需要手动 设置tblGrid的宽度。

    由于模板中表格就是两列,所以需要单独设置tblGrid前两列的宽度。

       //获取到table的CTTblGrid CTTblGrid tblGrid = table.getCTTbl().getTblGrid();//获取有多少单元格数量CTTblGridCol[] grid = tblGrid.getGridColArray();//单元格数量大于1if (grid.length >= 1) {tblGrid.getGridColArray(0).setW(BigInteger.valueOf(1701));//resultList.size()是生成列的数量tblGrid.getGridColArray(1).setW(BigInteger.valueOf(8505 / resultList.size()));}
    

POI导出word表格 office打开没问题 wps打开列有问题相关推荐

  1. 使用POI创建word表格合并单元格兼容wps

    poi创建word表格合并单元格代码如下: /** * @Description: 跨列合并 */ public void mergeCellsHorizontal(XWPFTable table, ...

  2. poi导出word表格、图片、多段等处理

    全文介绍 poi-tl(poi template language)是Word模板引擎,使用Word模板和数据创建很棒的Word文档 . 常用标签介绍(官网): 1文本:{{var}} 2. 图片:{ ...

  3. POI 导出 Word 表格

    项目需求,需要将页面上的报表导出Word文档. 一.报表如下: 二.主要实现代码 1.导出Util类 package com.yhksxt.util;import java.io.IOExceptio ...

  4. POi 导出word 表格,设置页面横版

    https://blog.csdn.net/qq_26408545/article/details/110669104 poi 导入,高版本不兼容,建议以下版本: <dependency> ...

  5. poi 导出 word 表格样式

    XWPFDocument document = new XWPFDocument(); // 基本信息表格 XWPFTable infoTable = document.createTable(); ...

  6. poi导出word表格设置自动重调尺寸适应内容固定表格宽度

    表格原本的type属性是autofit(自动调整),如果需要固定表格的宽度,需要关闭自动重调尺寸适应内容,java代码为 CTTblLayoutType type = infoTable.getCTT ...

  7. poi导出word 表格 单元格内换行

    List<XWPFTableCell> tableCellsq9 = table.getRow(8).getTableCells();    tableCellsq9.get(0).set ...

  8. poi设置word表格单元格宽度_poi导出word表格的操作讲解

    一.效果如下 二.js代码 function export_word(){ //导出word var url = "czzsca/exportWord.do"; this.expo ...

  9. Java POI导出word文件及生成表格

    HWPF是处理 Microsoft Word 97(-2007) .doc文件格式,它还为较旧的Word 6和Word 95文件格式提供了有限的只读支持.包含在poi-scratchpad-XXX.j ...

最新文章

  1. SQLServer之DEFAULT约束
  2. 设计模式(3)-装扮你的类(装饰模式)
  3. phpcms 添加memcache支持
  4. 服务器raid卡装虚拟机,DELLR730服务器阵列卡配置、VMware安装、WIN2008安装.docx
  5. zookeepr+kafka集群搭建(一)
  6. Java常见排序算法之直接选择排序
  7. JS数据结构初识(一)-栈
  8. 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包。
  9. bzoj 4709: [Jsoi2011]柠檬(分段DP+决策单调性)
  10. 编辑器之神Vim总结
  11. AVRNET 学习笔记UDP部分
  12. Luogu4936 Agent1
  13. 移动互联网浩荡十年 有的升腾,有的陨落
  14. drawboard pdf拆分文件_Drawboard PDF 免费版
  15. 为markdown目录标题添加序号
  16. Expected Array got Object
  17. 报The requested URL / was not found on thisserver. 网站打开出现404
  18. php自动加nofollow,WordPress自动给文章添加nofollow属性的实现方法
  19. Python的运行环境
  20. 来谈一谈专注力的真相

热门文章

  1. 只用70行代码,手把手教你遍历当前windows所有进程!
  2. Python之斐波那契
  3. Bugku:Snowfall
  4. codeup刷题 2.6小节——C/C++快速入门->函数 ——《算法笔记》(胡凡)
  5. 词嵌入、句向量等方法汇总
  6. 三维模型step(Stp)文件转obj或者stl文件
  7. spring boot控制AD域 报错解决
  8. # 会员注册与登录模块
  9. 家用空调什么牌子好又省电质量又好
  10. 圆柱贴180度全景图片