java生成word报告总结

qq_40082266 2018-11-14 01:57:16
一,简单模板导出(不含图片, 不含表格循环)
1, 新建一个word文档, 输入如下类容:

2, 将该word文件另存为xml格式(注意是另存为,不是直接改扩展名)
3, 将xml文件的扩展名直接改为ftl
4, 用java代码完成导出(需要导入freemarker.jar)
Java代码 收藏代码
@Test
public void exportSimpleWord() throws Exception{
// 要填充的数据, 注意map的key要和word中${xxx}的xxx一致
Map<String,String> dataMap = new HashMap<String,String>();
dataMap.put("username", "张三");
dataMap.put("sex", "男");

//Configuration用于读取ftl文件
Configuration configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");

/*以下是两种指定ftl文件所在目录路径的方式, 注意这两种方式都是
* 指定ftl文件所在目录的路径,而不是ftl文件的路径
*/
//指定路径的第一种方式(根据某个类的相对路径指定)
//configuration.setClassForTemplateLoading(this.getClass(),"");

//指定路径的第二种方式,我的路径是C:/a.ftl
configuration.setDirectoryForTemplateLoading(new File("C:/"));


// 输出文档路径及名称
File outFile = new File("D:/test.doc");

//以utf-8的编码读取ftl文件
Template t = configuration.getTemplate("a.ftl","utf-8");
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"),10240);
t.process(dataMap, out);
out.close();
}

5, 这时在D盘下就生成了一个test.word, 打开可以看到${xxx}已被替换

二, word文件中导入图片
1, 新建一个word文档, 在要插入图片的地方随便插入一张图片

2, 将word另存为xml
3, 将xml扩展名改为ftl
4, 打开ftl文件, 搜索w:binData 或者 png可以快速定位图片的位置,图片 已经编码成0-Z的字符串了, 如下:


5, 将上述0-Z的字符串全部删掉,写上${imgStr}(变量名随便写)后保存
6, 导入图片的代码与上述代码是一样的, 也是创建一个Map, 将数据存到map中,只不过我们要把图片用代码进行编码,将其也编成0-Z的字符串:
三, 导出循环的表格
1, 新建一个word文档, 插入如下表格:


2, 另存为xml, 将扩展名改为ftl
3, 搜索 w:tr 可以找到行的起点与结束点(注意第一对w:tr 是表头,应找第二对 w:tr), 如图:




4, 用<#list userList as user> </#list>标签将第二对 w:tr 标签包围起来(userList是集合的key, user是集合中的每个元素, 类似<c:forEach items='userList' var='user'>), 如图:
...全文
153 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,549

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧