poi-tl循环生成表格简单实现

2022-02-12  本文已影响0人  唐植超

不说那么多原因,直接上个例子,准备两个模板

主模板 main.docx 表格列表

1644667591.png

这里需要注意 {{+tables}}是用来显示子模板内容的

子模板 sub.docx 生成单个表格

image.png

pom.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();

    }

输出结果

image.png
上一篇下一篇

猜你喜欢

热点阅读