关于在Java中实现导出功能,导出格式为Word文档导出,具体参考如下代码。

1 先准备好一个导出Word文档的模板。

例如:
将其存值地方用字段代替。例如:

2.打开doc文件后 ,文件中的另存为,然后选择 保存类型为2003 版本的(*.xml)

3、 刚生成的xml文件里面比较乱,要整理一下,方法如下:

使用Eclipse/idea ,新建一个jsp ,把xml里面的东西覆盖更新刚才的jsp ,ctrl+Shift+F/ ctrl+alt+L 把文件整理一下,在拷贝出来,放到刚才的xml。文件内容就排好了,然后找到刚才我们写的name,sex,adress等地方,修改成为 name,{name} ,name,{sex},R{adress} (这些其实就是占位符,等下我们把我们的实际数据以一对应 的替换掉),
注意:需要注意的是 在列表上方,需要定义集合遍历的名称,例如你后台定义的list 是

 <#list listTotol as notice>例如时间:${notice.Day}关于自增序号的是:${notice_index+1}</list>

4.xml完成后.将格式改成ftl格式 (个人基本情况.xml ==>修改成:basic.ftl )(名字最好不要用中文)

5.将 basic.ftl 放到 com.xxx.template文件下(具体放的位置看项目具体结构是怎么样的)

6、导入jar包:freemarker-2.3.18.jar (可自行下载,或者问我要都行)

7、导入工具类

import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.Iterator;
import java.util.Map;import javax.servlet.http.HttpServletResponse;import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;public class WordDataUtil {/*** * @param mouldName   模板的名称 比如"basic.ftl"* @param dataMap     传入的数据(key=ftl 中的站位的名称同时 要是String )* @param fileName    最后生成的word文件的名称* @param response* @throws IOException*/public void exportWord(String mouldName,Map<String,Object> dataMap,String fileName,HttpServletResponse response) throws IOException {Configuration configuration  = new Configuration();configuration.setDefaultEncoding("utf-8");if(dataMap != null) {Iterator it = dataMap.entrySet().iterator();while (it.hasNext()) {Map.Entry entry = (Map.Entry) it.next();String key = (String)entry.getKey();Object value = entry.getValue();dataMap.put(key,value==null?"":value);//集合}}// 所在的项目中的路径configuration.setClassForTemplateLoading(this.getClass(), "/com/jaguar/template");Template t=null;try {//test.ftl word模板文件t = configuration.getTemplate(mouldName);} catch (IOException e) {e.printStackTrace();}String FileName = fileName + ".doc";response.setContentType("application/x-msdownload");response.setHeader("Content-Disposition","attachment;filename="+FileName);response.setHeader("Content-Disposition","attachment;filename="+new String(FileName.getBytes("gbk"),"iso-8859-1"));   Writer out = null;try {try {out = new BufferedWriter(new OutputStreamWriter(response.getOutputStream(), "UTF-8"));} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (FileNotFoundException e1) {e1.printStackTrace();}try {t.process(dataMap, out);} catch (TemplateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

8、编写controller层相关代码。在点击导出的时候,将查询到的相关对应的值set到对应的字段里。如:

/*** 下载表单数据* @param request* @param response* @throws Exception*/@RequestMapping("download")public void download(HttpServletRequest request, HttpServletResponse response) throws Exception{SimpleDateFormat data=new SimpleDateFormat("yyyy年MM月dd日");Long id=RequestUtil.getLong(request,"id");OaApplyInvite oaApplyInvite = oaApplyInviteService.getById(id); WordDataUtil wordDataUtil=new WordDataUtil();String fileName="个人基本情况表";String mouldName="basic.ftl";Map<String,Object> dataMap=new HashMap<String, Object>();SysOrg sysOrg=sysOrgService.getById(oaApplyInvite.getDeptid());//总的List<Notice> listTotol = attendUserService.findNoticeListTotol(sysOrg.getUserId());String Applydate=oaApplyInvite.getApplydate()==null?"":data.format(oaApplyInvite.getApplydate());dataMap.put("name",sysOrg.getName());//姓名,这里的那么 是和 刚才的xml中的${name} 对应的,dataMap.put("sex",sysOrg.getSex());//性别//集合列表dataMap.put("listTotol",listTotol);// 。。。。。。。。。。。wordDataUtil.exportWord(mouldName, dataMap, fileName, response);//打印的方法}

9、导出模板示例:

注意:dataMap中只能赋予String,不能直接传入类似date类型的值,需要转为String类型再插入。

java实现Word 文档形式的导出功能相关推荐

  1. Java生成Word文档并压缩导出。

    将该段代码放入循环中以获取需要导出的word文件的路径和名称,存入集合中. String fileName = wordDocExport(wordMap, exportWorkOrderMessag ...

  2. 基于Jfinal-Engine实现 word 文档的渲染导出功能,通过xml渲染后再转word

    大体思路: 1.使用Word制作出xml模板 2.然后使用JFinal的模板引擎渲染数据 3.拿到渲染后的xml,包装成word二进制数据 发送给前端下载保存即可 思路来源:https://jfina ...

  3. java填充word文档_如何使Word文档可填充但不可编辑

    java填充word文档 If contracts are part of your daily workflow, you know how frustrating it is when peopl ...

  4. Word处理控件Aspose.Words功能演示:用Java从Word文档中提取文本

    Aspose.Words For .NET是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsof ...

  5. Word处理控件Aspose.Words功能演示:使用 Java 处理 Word 文档的原始版本或修订版本

    Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word. A ...

  6. Word处理控件Aspose.Words功能演示:在 Java 中将 Word 文档转换为 EPUB

    大多数智能设备,如智能手机.平板电脑.笔记本电脑等,都支持EPUB格式来查看或阅读文档.它是电子书或电子出版物的常用格式.另一方面,MS Word 格式,如DOCX.DOC等,是数字世界中广泛使用的文 ...

  7. Word处理控件Aspose.Words功能演示:使用 Java 将 Word 文档转换为 HTML

    为了将 Word 文档的内容嵌入到您的应用程序中,您可能需要执行转换.在这种情况下,最广泛选择的转换是 Word 到HTML或 Word 到图像.,Aspose API支持流行文件格式处理,并允许将各 ...

  8. [原创]java读写word文档,完美解决方案

    [原创]java读写word文档,完美解决方案 参考文章: (1)[原创]java读写word文档,完美解决方案 (2)https://www.cnblogs.com/ziwuxian/p/89812 ...

  9. java 界面艺术字,Java 在Word文档中添加艺术字

    与普通文字相比,艺术字更加美观有趣也更具有辨识度,常见于一些设计精美的杂志或宣传海报中.我们在日常工作中编辑Word文档时,也可以通过添加艺术字体来凸显文章的重点,美化页面排版.这篇文章将介绍如何使用 ...

最新文章

  1. golang源码分析:defer流程分析
  2. 钉钉接入access_无需开发,IT事件接入钉钉的方法详解
  3. 解决EF使用context.Database.SqlQuery时NotMapped属性列为空null的问题(转载)
  4. android loader使用教程,Android Loader 机制,让你的数据加载更加轻松
  5. 换热站实际应用程序:西门子200smart PLC与威纶通触摸屏换热站程序
  6. Unity 3D模型展示素材
  7. JavaWeb之路02--请求与响应
  8. 前端class的中括号用法
  9. 串行接口的工作原理和实现
  10. sql 脚本 昨天的日期获取,今天的前一天的数据获取, 前两个月的今天
  11. 博客起航:为什么应该写博客
  12. Eclipse 更换皮肤
  13. 大数据Hive数据查询语言DQL
  14. ZBrush笔刷属性栏简介
  15. 房屋出租系统(第一版)
  16. Android “adb”不是内部或外部命令,也不是可运行的程序或批处理文件
  17. ogr2ogr命令介绍
  18. html分级管理目录,卫生部抗菌药物临床应用分级管理目录(2018最新版)
  19. 天融信学习笔记---DOS命令
  20. Variable详解

热门文章

  1. Linux Apache FTP-Server架设
  2. numpy之dtype用法
  3. 算法面试必备-----数据分析常见面试题
  4. python webkit内核_360浏览器使用meta标签强制使用指定webkit内核 - meta强制用极速模式...
  5. Windows C盘清理方法
  6. C#,图像二值化(13)——全局阈值的双峰平均值算法(Bimodal Thresholding)与源程序
  7. python正则匹配数字或者汉字
  8. ![CDATA[]] 的基本介绍
  9. H.264 NALU分隔Annex B和avcC
  10. Crosswalk 运行报错问题