poi-tl填充列表
时间: 2025-01-23 16:05:00 浏览: 47
### 使用 `poi-tl` 进行动态 Word 表格填充
为了实现将 `List<String>` 类型的数据填充到 Word 表格中并根据列动态扩展表格行数的功能,可以按照以下方法操作:
#### 添加 Maven 依赖
确保项目中的 `pom.xml` 文件包含了必要的依赖项[^2]:
```xml
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
<version>1.10.4</version>
</dependency>
```
#### 创建模板文档
准备一个包含占位符的 `.docx` 模板文件。例如,在单元格内放置 `${listItem}` 占位符用于后续替换。
#### 编写 Java 代码
下面是一个完整的示例程序展示如何读取模板、设置数据源以及导出最终的结果文件:
```java
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.TableRenderData;
import com.deepoove.poi.data.TextRenderData;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PoiTlExample {
public static void main(String[] args) throws Exception {
List<String> stringList = new ArrayList<>();
stringList.add("item one");
stringList.add("item two");
TableRenderData tableRenderData = createTable(stringList);
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("table", tableRenderData);
XWPFTemplate template = XWPFTemplate.compile("path/to/template.docx").render(dataMap);
try (FileOutputStream out = new FileOutputStream("output/result.docx")) {
template.write(out);
}
}
private static TableRenderData createTable(List<String> listItems) {
List<List<TextRenderData>> rows = new ArrayList<>();
for (String item : listItems) {
TextRenderData textRenderData = new TextRenderData(item);
rows.add(java.util.Collections.singletonList(textRenderData));
}
return new TableRenderData(null, rows);
}
}
```
这段代码创建了一个简单的表格渲染器,并通过循环遍历字符串列表来构建每一行的内容。最后调用 `XWPFTemplate.compile()` 方法加载模板文件路径,再利用 `render()` 函数传入所需参数完成实际内容注入过程。
阅读全文
相关推荐


















