poi-tl循环生成表格简单实现
2022-02-12 本文已影响0人
唐植超
不说那么多原因,直接上个例子,准备两个模板
主模板 main.docx 表格列表
1644667591.png这里需要注意 {{+tables}}是用来显示子模板内容的
子模板 sub.docx 生成单个表格
image.pngpom.xml
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
<version>1.7.3</version>
</dependency>
测试代码
子表格示例就是网上抄的,主要是出效果
public static void main(String[] args) throws Exception {
Map<String, Object> data = new HashMap<>();
List<Map> params = Lists.newArrayList();
for(int i = 0 ; i < 10 ;i ++){
//子模板内容
Map<String, Object> table = new HashMap<>();
RowRenderData header = RowRenderData.build(new TextRenderData("FF0000", "姓名"), new TextRenderData("FF0000", "学历"));
RowRenderData row0 = RowRenderData.build("张三"+i, "研究生"+i);
RowRenderData row1 = RowRenderData.build("李四"+i, "博士"+i);
List<RowRenderData> rows = new ArrayList<>();
rows.add(row0);
rows.add(row1);
table.put("title","测试信息"+i);
table.put("table",new MiniTableRenderData(header,rows));
params.add(table);
}
//嵌入
DocxRenderData docxRenderData = new DocxRenderData(new File("D:/ttt.docx"),params);
data.put("tables" , docxRenderData);
data.put("time","1111");
data.put("name","2222");
//主模板
XWPFTemplate template = XWPFTemplate.compile("D:/template2.docx")
.render(data);
FileOutputStream out;
//结果
out = new FileOutputStream("D:/res.docx");
template.write(out);
out.flush();
out.close();
template.close();
}