博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java导出到Word
阅读量:6544 次
发布时间:2019-06-24

本文共 4808 字,大约阅读时间需要 16 分钟。

1、操作步骤:

 (1)、新建word模板,凡是需要填充的数据用${xxxx},编辑好word文档后,另存为word文档的(*.xml),命名为mediteAgreementBook.xml(名字随意更改)

 (2)、在web项目中webroot目录下新建exptemplate文件夹,并将mediteAgreementBook.xml文件放到exptemplate文件夹下

 (3)、拷贝DocUtil.java工具类到项目中,如下面的调用实例

   (4)、返回相对路径,自动下载Word文档

2、添加maven依赖

org.freemarker
freemarker
2.3.23

3、Java代码

1 @Override 2     public String createMediateAgreementBookByCaseId(Long id) { 3         TrafficAccidentJudicial param = new TrafficAccidentJudicial(); 4         param.setCaseId(id); 5         List
listData = trafficAccidentJudicialDao.getMediateAgreementBookDataByCaseId(param); 6 Map
map = new HashMap<>(); 7 map.put("no", listData.get(0).getAccidentNo() != null ? listData.get(0).getAccidentNo() : ""); 8 9 map.put("na1", listData.get(0).getName() != null ? listData.get(0).getName() : "");10 map.put("s1", listData.get(0).getSexName());11 // map.put("n1", listData.get(0).getNationName());12 map.put("n1", "");13 map.put("a1", listData.get(0).getAge() != null ? listData.get(0).getAge() + "" : "");14 map.put("c1", listData.get(0).getCardNo() != null ? listData.get(0).getCardNo() : "");15 map.put("j1", listData.get(0).getVocation() != null ? listData.get(0).getVocation() : "");16 map.put("t1", listData.get(0).getTelephone() != null ? listData.get(0).getTelephone() : "");17 map.put("ad1", listData.get(0).getPresentAddress() != null ? listData.get(0).getPresentAddress() : "");18 19 map.put("na2", listData.get(1).getName() != null ? listData.get(1).getName() : "");20 map.put("s2", listData.get(1).getSexName());21 // map.put("n1", listData.get(0).getNationName());22 map.put("n2", "");23 map.put("a2", listData.get(1).getAge() != null ? listData.get(1).getAge() + "" : "");24 map.put("c2", listData.get(1).getCardNo() != null ? listData.get(1).getCardNo() : "");25 map.put("j2", listData.get(1).getVocation() != null ? listData.get(1).getVocation() : "");26 map.put("t2", listData.get(1).getTelephone() != null ? listData.get(1).getTelephone() : "");27 map.put("ad2", listData.get(1).getPresentAddress() != null ? listData.get(1).getPresentAddress() : "");28 29 map.put("dis", listData.get(1).getDisputeMatter() != null ? listData.get(1).getDisputeMatter() : "");30 map.put("me", listData.get(1).getMediateRecord() != null ? listData.get(1).getMediateRecord() : "");31 map.put("ad", listData.get(1).getAgreementDate() != null ? listData.get(1).getAgreementDate() : "");32 33 Calendar nowDate = Calendar.getInstance();34 35 map.put("y", nowDate.get(Calendar.YEAR) + "");36 map.put("m", (nowDate.get(Calendar.MONTH) + 1) + "");37 map.put("d", nowDate.get(Calendar.DAY_OF_MONTH) + "");38 39 40 String newWordName = "测试文件名称.doc";41 HttpServletRequest request = ServletActionContext.getRequest(); //Struts2获取request42 HttpServletResponse response = ServletActionContext.getResponse(); //Struts2获取response43 return exportWord(request, response, newWordName, map);44 }45 46 private String exportWord(HttpServletRequest request,HttpServletResponse response,String newWordName,Map
dataMap) {47 @SuppressWarnings("deprecation")48 Configuration configuration = new Configuration();49 configuration.setDefaultEncoding("utf-8"); //注意这里要设置编码50 51 //模板文件mediteAgreementBook.xml是放在WebRoot/exptemplate目录下的52 configuration.setServletContextForTemplateLoading(request.getSession()53 .getServletContext(), "/exptemplate");54 55 Template t = null;56 try {57 //word.xml是要生成Word文件的模板文件58 t = configuration.getTemplate("mediteAgreementBook.xml","utf-8"); // 文件名 还有这里要设置编码59 } catch (Exception e) {60 e.printStackTrace();61 }62 File outFile = null;63 Writer out = null;64 try {65 outFile = new File(FileUtil.getWebRoot() + GridProperties.EXPORTPATH + File.separator+ newWordName); //导出文档存放绝对路径66 out = new BufferedWriter(new OutputStreamWriter(67 new FileOutputStream(outFile),"utf-8")); //还有这里要设置编码68 t.process(dataMap, out);69 out.flush();70 out.close();71 return GridProperties.EXPORTPATH + File.separator + File.separator + newWordName; //返回相对路径72 } catch (Exception e1) {73 e1.printStackTrace();74 }75 return null;76 }

 

转载于:https://www.cnblogs.com/doublet/p/9990461.html

你可能感兴趣的文章
java泛型中<?>和<T>区别
查看>>
这里是指推送通知跟NSNotification有区别:
查看>>
用户ID的代码生成
查看>>
win7经常出现“关闭xxxx前您必须关闭所有会话框”
查看>>
SNMP安全配置的两种方法(也可同一时候兼顾配置两种方法)
查看>>
MongoDB 自己定义函数
查看>>
Summary Day30
查看>>
逆向输出回环数组
查看>>
高清摄像头MIPI CSI2接口浅解【转】
查看>>
C# CancellationTokenSource和CancellationToken的实现
查看>>
PCIE BAR空间
查看>>
如何用数学课件制作工具画角平分线
查看>>
VS2015 中统计整个项目的代码行数
查看>>
UWP控件与DataBind
查看>>
bash: php: command not found
查看>>
XVIII Open Cup named after E.V. Pankratiev. Eastern Grand Prix
查看>>
数据恢复软件如何换机使用?
查看>>
《高性能mysql》到手
查看>>
(转)关于如何学好游戏3D引擎编程的一些经验
查看>>
使用Kotlin为你的APP自定义一个统一的标题栏
查看>>