【poi-tl 最新详细使用教程】

本文通过简单介绍几个示例  实现 word简单导出  

①maven引用

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

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

②word导出公共方法

 public static void exportWordToPath(@NotNull String templateName,
                                        @NotNull Map dataMap,
                                        @NotNull HttpServletResponse response, String fileName) throws IOException {
        XWPFTemplate xwpfTemplate = null;
        OutputStream outputStream = response.getOutputStream();
        try {
            ListRenderPolicy policy = new ListRenderPolicy();
            // 配置
            Configure config = Configure.newBuilder().bind("yqst", policy).build();
            InputStream inputStream = getTemplateFile(templateName);
            // 编译模板,填充数据
            xwpfTemplate = XWPFTemplate
                    .compile(inputStream, config)
                    .render(dataMap);
            //设置Http响应头告诉浏览器下载这个附件
            fileName = new String(fileName.getBytes(), StandardCharsets.ISO_8859_1);
            response.setHeader("Content-Disposition", "attachment;Filename=" + fileName + ".docx");
            response.setContentType("application/octet-stream");
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            xwpfTemplate.write(toClient);
            toClient.flush();
        } catch (IOException e) {
            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
            throw new RuntimeException("生成文件失败!");
        } finally {
            if (xwpfTemplate != null) {
                xwpfTemplate.close();
            }
            outputStream.close();
        }

    }

③导出示例

 @GetMapping("/exportWord")
    public void exportWord(HttpServletResponse response) throws IOException {

        Map<String, Object> map = new HashMap<>();

        //简单的文字导出
        map.put("name","这是一个简单的导出");

        //list导出  config需绑定 对象
        List<Object> list =new ArrayList<>();

        Style style = new Style();
        style.setBold(true);
        style.setColor("FF0040");
        style.setFontSize(15);


        /**
         * 可以对文字进行风格设置
         */
        list.add(new TextRenderData("听妈妈的话",style));
        list.add(new TextRenderData("夜曲"));
        list.add(new TextRenderData("止战之殇"));


        map.put("yqst", list);

        //表格导出  textColor 可定义字体颜色 bgColor 可定义单元格背景颜色 center表示居中

        RowRenderData rows0 = Rows.of("歌手", "专辑名称","主打歌").textColor("2E2E2E").bgColor("F4FA58").center().create();
        RowRenderData rows1 = Rows.of("周杰伦", "范特西","爱在西元前").textColor("0040FF").bgColor("F8E0EC").center().create();

        map.put("table", Tables.create(rows0,rows1));

        WordExportUtil.exportWordToPath("simple.docx", map, response, "第一个导出示例");
    }

④模板示例

 

看下导出结果:

 

 有不懂的可以留言~

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
首先,你需要在你的项目中添加poi-tl的依赖,如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.3.1</version> </dependency> ``` 如果你使用Gradle,可以在build.gradle文件中添加以下依赖: ``` compile 'com.deepoove:poi-tl:1.3.1' ``` 添加依赖后,你就可以开始使用poi-tl了。poi-tl是一个基于Apache POI的模板引擎,可以用来生成Word、Excel、PowerPoint等文档。下面是一个简单的示例,演示如何使用poi-tl生成一个Word文档: ```java import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.data.*; import com.deepoove.poi.data.style.Style; import com.deepoove.poi.util.BytePictureUtils; import java.io.FileOutputStream; import java.io.IOException; import java.util.*; public class PoiTlDemo { public static void main(String[] args) throws IOException { // 创建模板数据 Map<String, Object> data = new HashMap<>(); data.put("title", "poi-tl示例"); data.put("name", "张三"); data.put("age", 28); List<Map<String, Object>> list = new ArrayList<>(); list.add(createDataMap("项目一", "2019-01-01", "2019-02-01")); list.add(createDataMap("项目二", "2019-03-01", "2019-04-01")); data.put("list", list); // 创建模板 DocxRenderData template = new DocxRenderData( PoiTlDemo.class.getResourceAsStream("/template.docx"), data); // 渲染模板 XWPFTemplate document = XWPFTemplate.compile(template).render(data); // 将生成的文档保存到本地 FileOutputStream out = new FileOutputStream("output.docx"); document.write(out); out.close(); // 关闭文档 document.close(); } private static Map<String, Object> createDataMap(String name, String startDate, String endDate) { Map<String, Object> dataMap = new HashMap<>(); dataMap.put("name", name); dataMap.put("startDate", startDate); dataMap.put("endDate", endDate); return dataMap; } } ``` 上面的代码中,我们首先创建了一个模板数据,包含了一个标题、一个姓名、一个年龄和一个项目列表。然后,我们创建了一个模板,使用了一个Word文档作为模板文件,将模板数据传递给了模板。最后,我们使用XWPFTemplate.compile()方法编译模板,并使用render()方法渲染模板,得到了一个XWPFTemplate对象,将其保存到本地文件,并关闭了文档。 这只是poi-tl的一个简单示例,如果你想深入了解poi-tl的更多用法,请查看官方文档。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

音阙斯听

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值