POI读取word模板并生成word文档 案例2
要读取的模板

添加依赖
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
<version>1.10.0</version>
</dependency>
案例
package com.et.com.et.test;
import com.alibaba.fastjson.JSON;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.PictureRenderData;
import com.deepoove.poi.data.PictureType;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import org.apache.commons.collections.map.HashedMap;
import java.io.File;
import java.io.FileInputStream;
import java.io.FilenameFilter;
import java.util.*;
public class WordTest2 {
static int i=0;
static Map<String,Object> map = new HashedMap();
public static void main(String[] args) {
try {
// 模板文件地址
String filePath = "D:\\demo2.docx";
// 读取模板后保存生成word的地址
String outPath = "D:\\作业封面.docx";
readFileName(new File("C:\\Users\\etjav\\Desktop\\宋老师打印资料\\学生作业1"));
// 读取模板、数据并渲染
XWPFTemplate template = XWPFTemplate.compile(new File(filePath)).render(
// 创建一个map并设置为只读map
Collections.unmodifiableMap(map)
);
// 生成word保存在指定目录
template.writeToFile(outPath);
template.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 封装子目录中所有的文件名称
private static Map<String,Object> readFileName(File file){
if(file.listFiles()!=null){
File[] files = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File ff = new File(dir, name);
if (dir.isDirectory()) {
readFileName(ff);
}
return name.toLowerCase().endsWith(".doc") ||
name.toLowerCase().endsWith(".docx")||
name.toLowerCase().endsWith(".pdf");// 返回子目录中任意格式的所有文件
}
});
for (File file1 : files) {
i++;
map.put("stuNum"+i,file1.getName().split("\\+")[0]);
map.put("stuName"+i,file1.getName().split("\\+")[1].split("\\.")[0]);
map.put("classNum"+i,file1.getAbsolutePath().split("\\\\")[6]);
}
}
return map;
}
}
子目录及对应的文件


生成的文件
