poi-tl生成表格
时间: 2025-05-15 22:10:00 浏览: 47
### 使用 poi-tl 生成 Excel 表格
虽然 `poi-tl` 更常用于 Word 文档的生成,但它同样支持基于模板的方式生成 Excel 文件。以下是通过 `poi-tl` 实现 Excel 表格生成的一个完整示例。
#### Maven依赖配置
首先,在项目的 `pom.xml` 中引入必要的依赖项:
```xml
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>eexcel</artifactId>
<version>5.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
```
#### 创建Excel模板文件
创建一个 `.xlsx` 模板文件,并定义占位符。例如:
| 序号 | 名称 | 年龄 |
|------|------------|------|
| {{id}} | {{name}} | {{age}} |
保存该文件并命名为 `template.xlsx`。
#### Java代码实现
以下是一个完整的Java代码示例,演示如何使用 `poi-tl` 基于上述模板生成填充后的Excel文件。
```java
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PoiTlExcelExample {
public static void main(String[] args) throws Exception {
// 定义模板路径
String templatePath = "path/to/template.xlsx";
// 设置导出参数
TemplateExportParams params = new TemplateExportParams(templatePath);
// 构建数据模型
List<Map<String, Object>> dataList = new ArrayList<>();
Map<String, Object> dataMap1 = new HashMap<>();
dataMap1.put("id", 1);
dataMap1.put("name", "张三");
dataMap1.put("age", 28);
dataList.add(dataMap1);
Map<String, Object> dataMap2 = new HashMap<>();
dataMap2.put("id", 2);
dataMap2.put("name", "李四");
dataMap2.put("age", 30);
dataList.add(dataMap2);
// 将数据放入根对象
Map<String, Object> rootMap = new HashMap<>();
rootMap.put("list", dataList); // 对应模板中的{{list}}
// 执行导出操作
Workbook workbook = cn.afterturn.easypoi.excel.ExcelExportUtil.exportExcel(params, rootMap);
// 输出到文件
try (FileOutputStream fos = new FileOutputStream("output.xlsx")) {
workbook.write(fos);
}
}
}
```
此代码会读取指定的模板文件 `template.xlsx`,并将数据填入其中,最终生成名为 `output.xlsx` 的新文件[^1]。
#### 关键点说明
1. **TemplateExportParams** 是用来加载模板的核心类,需传入模板文件路径。
2. 数据可以通过 `List<Map<String, Object>>` 或其他结构化方式传递给模板引擎处理。
3. 占位符如 `{{id}}`, `{{name}}` 需要在模板中预先定义好位置和名称。
---
###
阅读全文
相关推荐
















