word模板制作
- word模板文件制作
- word转xml格式
- 填充数据部分可根据freemarker语法,可参照官网:freemarker.foofun.cn/
如占位符${a!''}
Controller层
public void createActivityRecord(Activity activity,HttpServletResponse response) {
byte[] data = stglActivityService.createActivityRecord(activity);
String name = activity.getGroupName()+".doc";
response.reset();
response.addHeader("Content-Disposition", "attachment; filename="+ new String(name.getBytes("GBK"), "ISO8859-1"));
response.addHeader("Content-Length", "" + data.length);
response.setContentType("application/octet-stream; charset=UTF-8");
try {
IoUtil.write(response.getOutputStream(), Boolean.TRUE, data);
} catch (IORuntimeException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
service层
public byte[] createActivityRecord(StglActivity activity) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Map<String,Object> dataMap = BeanUtil.beanToMap(activity);
WordUtils.createEvaluation(dataMap, outputStream);
IoUtil.close(outputStream);
return outputStream.toByteArray();
}
utils
文件存放在src/main/resources/template
public static void createEvaluation(Map<String, Object> dataMap,ByteArrayOutputStream outputStream) {
try {
ClassPathResource classPathResource = new ClassPathResource("template");
if (classPathResource.exists() && classPathResource.isFile()) {
configuration.setDirectoryForTemplateLoading(classPathResource.getFile());
} else {
configuration.setDirectoryForTemplateLoading(new File("template"));
}
Template t = configuration.getTemplate("activity.ftl");
StringWriter sw = new StringWriter();
t.process(dataMap, sw);
IoUtil.write(outputStream, CharsetUtil.UTF_8, false, sw.toString());
IoUtil.close(sw);
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}