当前位置:   article > 正文

java使用POI -ti 导出word表格List对象类型数据包含图片数据,表格合并_mergecellrule.mergecellrulebuilder mergecellrulebu

mergecellrule.mergecellrulebuilder mergecellrulebuilder = mergecellrule.buil

一、前期准备?

导入pom文件 

<dependency>
    <groupId>com.deepoove</groupId>
    <artifactId>poi-tl</artifactId>
    <version>1.12.1</version>
</dependency>

二 、导出 代码

看了很长时间的源码,没看懂,看了文档 介绍的技术,跟需求不符合,

导出表格 不能事先定义表格头部模版,就在表格中写

1.定义表格中 映射字段

 2.代码实现

  1. Map<String,Object> res = new HashMap<>();
  2. //设置的合并规则
  3. MergeCellRule.MergeCellRuleBuilder mergeCellRuleBuilder = MergeCellRule.builder();
  4. //设置表头
  5. RowRenderData header = Rows.of("姓名", "年龄", "身高").bgColor("F2F2F2").center()
  6. .textColor("7F7f7F").textFontFamily("Hei").textFontSize(9).create();
  7. List<Map<String,String>> lists = new ArrayList<>();
  8. Map<String,String> map = new HashMap<>();
  9. map.put("name", "小红");
  10. map.put("age", "18");
  11. map.put("height", "165");
  12. lists.add(map);
  13. lists.add(map);
  14. lists.add(map);
  15. lists.add(map);
  16. lists.add(map);
  17. lists.add(map);
  18. lists.add(map);
  19. lists.add(map);
  20. lists.add(map);
  21. lists.add(map);
  22. //设置样式颜色尺寸等等
  23. BorderStyle borderStyle = new BorderStyle();
  24. borderStyle.setColor("A6A6A6");
  25. borderStyle.setSize(4);
  26. borderStyle.setType(XWPFTable.XWPFBorderType.SINGLE);
  27. Tables.TableBuilder tableBuilder = Tables.ofA4MediumWidth();
  28. tableBuilder.addRow(header);
  29. //表体内容
  30. for (Map<String, String> list : lists) {
  31. RowRenderData row = Rows.of(map.get("name"),map.get("age"),map.get("height")).center().create();
  32. tableBuilder.addRow(row);
  33. }
  34. TableRenderData tableRenderData = tableBuilder.border(borderStyle).create();
  35. /**
  36. * 设置表格合并规则
  37. * 1.起始行 MergeCellRule.Grid.of(i, j) i: 行 j: 列
  38. * 2.结束行 MergeCellRule.Grid.of(i, j) i: 行 j: 列
  39. */
  40. mergeCellRuleBuilder.map(MergeCellRule.Grid.of(1, 0), MergeCellRule.Grid.of(3, 0));
  41. mergeCellRuleBuilder.map(MergeCellRule.Grid.of(4, 0), MergeCellRule.Grid.of(5, 0));
  42. mergeCellRuleBuilder.map(MergeCellRule.Grid.of(6, 0), MergeCellRule.Grid.of(9, 0));
  43. /**
  44. * MergeCellRule支持多合并规则,会以Map的形式存入可以看一下源码
  45. * !!! 一定要设置完规则后再调用 MergeCellRule的build方法进行构建
  46. */
  47. tableRenderData.setMergeRule(mergeCellRuleBuilder.build());
  48. res.put("title", "测试测试");
  49. res.put("date","2023-8-8");
  50. res.put("renderData",tableRenderData);
  51. XWPFTemplate template = XWPFTemplate.compile("C:\\Users\\admin\\Desktop\\施工日报.docx").render(res);
  52. template.writeAndClose(Files.newOutputStream(Paths.get("C:\\Users\\admin\\Desktop\\施工日报1.docx")));

这里的地址 写的是本地测试地址 ,等实际应用时  可以存放到服务器

 3. 导出结果

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/606839
推荐阅读
相关标签
  

闽ICP备14008679号