基于模版生成word
- 1、引入maven
- 2、word模版编写
- 3、java代码
- 4、效果
AutoPoi的主要特点
参考文献
https://help.jeecg.com/autopoi/autopoi/prequel/test.html
1.设计精巧,使用简单
2.接口丰富,扩展简单
3.默认值多,write less do more
4.spring mvc支持,web导出可以简单明了
1、引入maven
<dependency>
<groupId>org.jeecgframework</groupId>
<artifactId>autopoi-web</artifactId>
<version>1.4.8</version>
</dependency>
2、word模版编写
目前仅支持表格循环、变量替换
{{department}}
{{person}}
{{image}}
{{time}}
序列号 | xx | 名称 | 小学生 |
---|---|---|---|
{{$fe:testList}}{{.id.}} | {{zijin}} | {{quancheng}} | {{bianma}} |
图片以供模版参考
3、java代码
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.jeecg.common.util.DateUtils;
import org.jeecgframework.poi.word.WordExportUtil;
import org.jeecgframework.poi.word.entity.WordImageEntity;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class WordExportUtils {
public static void main(String[] args) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("department", "Easypoi");
map.put("person", "JueYue");
map.put("time", DateUtils.formatDate(new Date()));
String templateFileUrl = "C:\\Users\\123\\Desktop\\1\\667\\1111.docx";
List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
for (int i = 0; i < 4; i++) {
Map<String, Object> lm = new HashMap<String, Object>();
lm.put("id", i + 1 + "");
lm.put("zijin", i * 10000 + "");
lm.put("bianma", "A001");
lm.put("mingcheng", "设计");
lm.put("xiangmumingcheng", "EasyPoi " + i + "期");
lm.put("quancheng", "开源项目");
lm.put("sqje", i * 10000 + "");
lm.put("hdje", i * 10000 + "");
lm.put("$fe:testList", lm);
listMap.add(lm);
}
map.put("testList", listMap);
WordImageEntity image = new WordImageEntity();
image.setHeight(200);
image.setWidth(500);
image.setUrl("/static/337.png");
image.setType(WordImageEntity.URL);
map.put("image", image);
XWPFDocument doc = imageWordExport(map, templateFileUrl);
try {
FileOutputStream fos = new FileOutputStream("C:\\Users\\123\\Desktop\\1\\667\\1111After.docx");
doc.write(fos);
fos.close();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
doc.write(byteArrayOutputStream);
System.out.println("总字节大小:" + byteArrayOutputStream.toByteArray().length);
} catch (IOException e) {
e.printStackTrace();
}
}
public static XWPFDocument imageWordExport(Map<String, Object> map, String templateFileUrl) {
try {
return WordExportUtil.exportWord07(templateFileUrl, map);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}