赞
踩
导入pom文件
<dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.12.1</version> </dependency>
看了很长时间的源码,没看懂,看了文档 介绍的技术,跟需求不符合,
导出表格 不能事先定义表格头部模版,就在表格中写
- Map<String,Object> res = new HashMap<>();
- //设置的合并规则
- MergeCellRule.MergeCellRuleBuilder mergeCellRuleBuilder = MergeCellRule.builder();
- //设置表头
- RowRenderData header = Rows.of("姓名", "年龄", "身高").bgColor("F2F2F2").center()
- .textColor("7F7f7F").textFontFamily("Hei").textFontSize(9).create();
- List<Map<String,String>> lists = new ArrayList<>();
- Map<String,String> map = new HashMap<>();
- map.put("name", "小红");
- map.put("age", "18");
- map.put("height", "165");
- lists.add(map);
- lists.add(map);
- lists.add(map);
- lists.add(map);
- lists.add(map);
- lists.add(map);
- lists.add(map);
- lists.add(map);
- lists.add(map);
- lists.add(map);
- //设置样式颜色尺寸等等
- BorderStyle borderStyle = new BorderStyle();
- borderStyle.setColor("A6A6A6");
- borderStyle.setSize(4);
- borderStyle.setType(XWPFTable.XWPFBorderType.SINGLE);
-
-
- Tables.TableBuilder tableBuilder = Tables.ofA4MediumWidth();
- tableBuilder.addRow(header);
- //表体内容
- for (Map<String, String> list : lists) {
- RowRenderData row = Rows.of(map.get("name"),map.get("age"),map.get("height")).center().create();
- tableBuilder.addRow(row);
- }
- TableRenderData tableRenderData = tableBuilder.border(borderStyle).create();
-
- /**
- * 设置表格合并规则
- * 1.起始行 MergeCellRule.Grid.of(i, j) i: 行 j: 列
- * 2.结束行 MergeCellRule.Grid.of(i, j) i: 行 j: 列
- */
- mergeCellRuleBuilder.map(MergeCellRule.Grid.of(1, 0), MergeCellRule.Grid.of(3, 0));
- mergeCellRuleBuilder.map(MergeCellRule.Grid.of(4, 0), MergeCellRule.Grid.of(5, 0));
- mergeCellRuleBuilder.map(MergeCellRule.Grid.of(6, 0), MergeCellRule.Grid.of(9, 0));
-
- /**
- * MergeCellRule支持多合并规则,会以Map的形式存入可以看一下源码
- * !!! 一定要设置完规则后再调用 MergeCellRule的build方法进行构建
- */
- tableRenderData.setMergeRule(mergeCellRuleBuilder.build());
-
- res.put("title", "测试测试");
- res.put("date","2023-8-8");
- res.put("renderData",tableRenderData);
-
- XWPFTemplate template = XWPFTemplate.compile("C:\\Users\\admin\\Desktop\\施工日报.docx").render(res);
- template.writeAndClose(Files.newOutputStream(Paths.get("C:\\Users\\admin\\Desktop\\施工日报1.docx")));
这里的地址 写的是本地测试地址 ,等实际应用时 可以存放到服务器
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。