【java】poi-tl向word模板插入文本、表格、柱状图

  • poi-tl版本差异性较大,如果被版本束缚,较难找到对应版本的copy代码,这时候可以参考其他版本再对照自己版本的jar包文件来对应实现。
    poi 与 poi-tl 版本对应关系 http://deepoove.com/poi-tl
  •  poi-tl官网 Poi-tl Documentation

一、导包

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

<!--2.poi官网指出需要poi4.x.x版本抛弃了jdk1.7之前的版本,所以适应此版本需要将jdk升级,如果不想升级还有另一种办法就是,
使用springBoot单独做一个服务为你的主项目提供一个接口,让主项目去调用生成word流让主项目去接收即可。-->

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

二、word模板

模板

图表需要在可选文字里面加上{ {picture}}标签

输出结果

三、代码实现

package com.example.demo.util;

import lombok.Data;

@Data
public class DataQuality {

    //            "数据表名",
    private String dataName;

    //            "中文名称",
  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
确保您已经在项目的pom.xml文件中添加了poi-tl库的依赖: ```xml <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.12.0</version> </dependency> ``` 然后,您可以按照以下步骤使用poi-tl库来合并表格并下载Word文档: 1. 创建一个Word模板文件,其中包含您要合并的表格。您可以使用Microsoft Word或其他编辑器创建模板文件,并确保在模板文件中使用`${}`标记来标记需要替换的文本。 2. 创建一个Java类来处理导出请求。例如,创建一个名为WordExportController的类。 ```java import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.deepoove.poi.data.TableRenderData; import com.deepoove.poi.data.TextRenderData; import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; @Controller public class WordExportController { @GetMapping("/export") public ResponseEntity<InputStreamResource> exportWord() throws IOException { // 加载Word模板文件 XWPFTemplate template = XWPFTemplate.compile("templates/template.docx") .render(getTemplateData()); // 将生成的Word文档转换为字节数组 ByteArrayOutputStream out = new ByteArrayOutputStream(); template.write(out); byte[] documentBytes = out.toByteArray(); // 设置下载响应的头信息 HttpHeaders headers = new HttpHeaders(); headers.setContentDispositionFormData("attachment", "merged_table.docx"); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); // 创建一个包含Word文档字节数组的InputStreamResource InputStreamResource resource = new InputStreamResource(new ByteArrayInputStream(documentBytes)); // 返回响应实体 return ResponseEntity.ok() .headers(headers) .body(resource); } private Map<String, Object> getTemplateData() { Map<String, Object> data = new HashMap<>(); // 创建表格数据 TableRenderData tableData = new TableRenderData(); tableData.setHeader(new TextRenderData("FFFFFF", "Header 1")); tableData.setRow(new TextRenderData("FFFFFF", "Cell 1"), new TextRenderData("FFFFFF", "Cell 2")); // 将表格数据存储到模板数据中 data.put("tableData", tableData); return data; } } ``` 3. 在resources目录下创建一个名为`template.docx`的Word模板文件,并按照您的需求设置表格样式和内容。在模板文件中,您可以使用`${tableData}`来标记需要替换的表格数据。 4. 启动您的Spring Boot应用程序,并访问导出请求的URL(例如:http://localhost:8080/export)。将会自动下载名为`merged_table.docx`的Word文档,其中包含合并表格的内容。 请确保按照您的需求修改代码,并根据模板文件的位置进行相应的调整。 希望对您有所帮助!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值