poi-tl循环生成word表格简单实现(一个模板)

话不多说,上模板

image.png

pom.xml

  
            com.deepoove
            poi-tl
            1.7.3
        

测试代码

参考 https://blog.csdn.net/qq_26383975/article/details/112238802

 //需要循环的变量配置
        HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
        Configure config = Configure.newBuilder()
                .bind("tables", policy)
                .bind("flist",policy)
                .build();
        //组装对象
        List tableVars = tables.stream().map(item ->{
            JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(item));
            try {
                jsonObject.put("flist",getFields(item,propConfig));
                jsonObject.put("title",item.getComment());
            } catch (SQLException e) {
                e.printStackTrace();
            }
            System.out.println(jsonObject);
            return jsonObject;
        }).collect(Collectors.toList());
        //渲染模板
        XWPFTemplate template = XWPFTemplate.compile(this.getClass().getResourceAsStream("/templates/onedoctemplate.docx"), config).render(
                new HashMap() {{
                    put("title",propConfig.getModuleName());
                    put("tables", tableVars);
                    put("date",new SimpleDateFormat("yyyy-MM-DD HH:mm:ss").format(new Date()));
                    put("author",propConfig.getAuthor());
                }}
        );
        //输出
        String outDir = propConfig.getConfigDir().concat(File.separator).concat("dist");
        File dir = new File(outDir);
        dir.mkdirs();

        File file = new File(dir, "数据库设计文档.docx");
        if (file.exists() && file.isFile()) {
            file.delete();
        } 
        FileOutputStream out = new FileOutputStream(file);
        template.write(out);
        out.flush();
        out.close();
        template.close();

实体类说明: table

import lombok.Data;

@Data
public class Table {
    private String t_name;// 表名
    private String comment;// 表名注释
    private String cls_upp;// 类名(首字母大写)
    private String c_name;// 类中文名
}

实体类说明: field

import lombok.Data;

@Data
public class Field {
    private String name;// 字段名
    private String comment;// 注释
    private String type;// 数据类型

    private String lower_camel; //单峰驼
    private String upper_camel; //双峰驼

    private Integer length; //字符长度
    private String column_key;//键

    private String dbType; //数据库类型
    private String allTypeName;//类型全称
    private String mb_db_type ;//mybatis 数据库类型

}

输出效果图

image.png

你可能感兴趣的:(poi-tl循环生成word表格简单实现(一个模板))