一步步按着写,图片看不清的,右键打开新标签页查看图片,谢谢

html

<a href="javascript:void(0)" class="easyui-linkbutton" plain="true" id="btn_customOpen">导出word</a>

前端js(ids为传递参数)

$.messager.confirm('温馨提示','确认打印选中用户信息!',function(r){if (r){window.location.href='artificialAccount/OpenAccountInfo.do?ids='+ids;$('#data_list').datagrid("reload");}
});

后台

@RequestMapping("/OpenAccountInfo.do")
@Logs(remark = "打印用户信息", type = LogsType.OTHER)
public void OpenAccountInfo(HttpServletRequest request,HttpServletResponse response,String ids) throws Exception {if (ids != null) {ids=ids.substring(0,ids.lastIndexOf(",")).replaceAll("\"","\\\"");if (ids!=null) {//根据ids,查询所有的导出word用户List<AccountOpenVo> customlist = customService.getOpenCustomInfo(ids);***WordKit.genWord(customlist);***} response.setContentType("application/force-download");// 设置强制下载不打开String fileName = java.net.URLEncoder.encode("用户信息", "UTF-8");response.addHeader("Content-Disposition", "attachment;fileName=" + new String(fileName+".doc"));// 设置文件名OutputStream out = response.getOutputStream();out.write(FileUtils.readFileToByteArray(new File(WordKit.getTemPath())));out.flush();out.close();}}

另外的引用的word方法(getWord)

package com.ewide.cloud.oc.cm.utils;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import com.ewide.cloud.oc.cm.vo.AccountOpenVo;
import com.google.common.collect.Lists;import freemarker.template.Configuration;
import freemarker.template.Template;public class WordKit {public static Configuration cfg = null;public static void main(String[] args) throws Exception {System.out.println(WordKit.class.getClassLoader().getResource("template").getPath());genWord();}//可测试打印试试public static void genWord() throws Exception {List<Map<String, Object>> lists = Lists.newArrayList();Map<String, Object> mybatisMap1 = new HashMap<String, Object>();mybatisMap1.put("cname", "测试1");Map<String, Object> mybatisMap2 = new HashMap<String, Object>();mybatisMap2.put("cname", "测试2");mybatisMap2.put("ccode", "测试2");mybatisMap2.put("contact", "lianx2");mybatisMap2.put("identitype", "as2");Map<String, Object> mybatisMap3 = new HashMap<String, Object>();mybatisMap3.put("cname", "测试2");mybatisMap3.put("ccode", "测试2");mybatisMap3.put("contact", "lianx2");mybatisMap3.put("identitype", "as2");Map<String, Object> mybatisMap4 = new HashMap<String, Object>();mybatisMap4.put("cname", "测试2");mybatisMap4.put("ccode", "测试2");mybatisMap4.put("contact", "lianx2");mybatisMap4.put("identitype", "as2");Map<String, Object> mybatisMap5 = new HashMap<String, Object>();mybatisMap5.put("cname", "测试2");mybatisMap5.put("ccode", "测试2");mybatisMap5.put("contact", "lianx2");mybatisMap5.put("identitype", "as2");lists.add(mybatisMap1);lists.add(mybatisMap2);lists.add(mybatisMap3);lists.add(mybatisMap4);lists.add(mybatisMap5);Map<String, Object> mybatisMap = new HashMap<String, Object>();mybatisMap.put("columns", lists);Writer mybatisOut = new OutputStreamWriter(new FileOutputStream("d://ewideconf//test.doc"), "utf-8");Template mybatisTemplate = cfg.getTemplate("account.ftl");mybatisTemplate.process(mybatisMap, mybatisOut);}static {cfg = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);cfg.setDefaultEncoding("UTF-8");String filePath = WordKit.class.getClassLoader().getResource("template").getPath();File templateFile = new File(filePath);try {cfg.setDirectoryForTemplateLoading(templateFile);} catch (IOException e) {e.printStackTrace();}}public static String getTemPath() throws Exception {String filePath = WordKit.class.getClassLoader().getResource("template").getPath();return filePath + File.separator + "tem.doc";}public static String getTemPath(String filePath) throws Exception {String path = WordKit.class.getClassLoader().getResource("template").getPath() + File.separator + filePath;File file = new File(path);if (!file.exists()) {file.mkdirs();}return path;}//lists需要导出的数据public static void genWord(List<AccountOpenVo> lists) throws Exception {Map<String, Object> mybatisMap = new HashMap<String, Object>();mybatisMap.put("columns", lists);//将word先存入临时文件Writer mybatisOut = new OutputStreamWriter(new FileOutputStream(WordKit.class.getClassLoader().getResource("template").getPath() + "/tem.doc"),"UTF-8");//account.ftl这个是你word的模板Template mybatisTemplate = cfg.getTemplate("**account.ftl**", "UTF-8");mybatisTemplate.process(mybatisMap, mybatisOut);}
}

word模板操作
第一步:
新建你需要打印的模板,且将要填入值的字段写入,如图1:

第二步:
1.文件保存未xml文件

2.保存成功后将后缀改为ftl

3.完成后打开此文件,找到模板的table开始的地方,就是“《w:tbl》《/w:tbl》”

4.在“《w:tbl》《/w:tbl》”加入《#list columns as obj》 《/list》


5.更改值,将obj加入

保存后将此模板放到项目template文件夹下
搞定,收工!!!!

Java word导出,可导出一份word或多页word内容相关推荐

  1. 【Apache POI】Java Web根据模板导出word文件

    最近工作中遇到一个需求:根据word模板文档导出word文件. 查阅了一些资料,发现Apache POI可以实现文档读写的功能,于是就研究了一下,总结如下: Apache-POI在线Javadoc:h ...

  2. java 富文本 word_Java导出富文本到word

    源码地址: 背景 最近用java开发一个中车项目管理系统,里面有一个维修单word导出功能. 可用方案 在网上查找资料,总结出两种比较可行的方案. (1) 制作word模板,导出成mht文件(单页面网 ...

  3. java通过ftl模板导出word最详细教程

    百度云链接 链接: https://pan.baidu.com/s/1OEzvsFSqAelstDtu2mo5xw 提取码: fdhq https://pan.baidu.com/s/1OEzvsFS ...

  4. Java之利用FreeMarker导出Word实例

    开心一笑 感冒了很难受,她闷在被窝里给男朋友发短信"我感冒了-"并决定如果对方回答"多喝点水"就一脚踹了他.过一会儿手机振动起来,短信内容:"开门."--这个大笨蛋!谁让他来的啦!她起身用最快的速度冲 ...

  5. Java使用Poi实现导出Word段落以及表格,XWPFParagraph和XWPFRun详解,生成目录,生成折线图、柱状图、饼状图

    导出段落 public void exportSummarizeWord(HttpServletResponse response, Integer id) {Summarize summarize ...

  6. java使用freemarker模版导出分页word

    1.模版的制作 (1).先用word制作好模版的样式,我的模版样式如下图 (2).将制作好的word模版另存为word 2003 XML文件,具体内容如下 <?xml version=" ...

  7. easypoi 列合并_SpringBoot整合EasyPOI实现Excel、Word的导入导出功能

    一.EsayPOI的介绍 easypoi 功能如同名字easy,主打的功能就是容易.让一个没见接触过poi的人员就可以方便的写出Excel导出,Excel导出,Excel导入,Word模板导出,通过简 ...

  8. 网页导出pdf不完整_今天才知道!Word、Excel、PDF格式还能随意转换,20秒即可实现...

    前几天有粉丝私信转换君说为什么格式转换这么难?每次都要将内容复制过去再调整格式,一个小时才转换十几份文件,真是太难了! 看完这个私信,转换君发现之前给大家补的课都白补了,不过作为宠粉达人的我,还是再给 ...

  9. POI对word进行基本导出(段落、表格)

    简单使用POI对word进行基本导出(段落.表格) 使用场景 最近遇到帮同事做一个多选运动员选择几个运动员就导出几个运动员生成表格,同时还要输出固定文字的word的这样一个功能.我公司一般导出功能都是 ...

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

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

最新文章

  1. 太牛了!这所211大学,又有95后硕士生一作发Nature!
  2. 在Python中计算一次性计算多个百分位数percentile、quantile
  3. 每日一皮:多线程理想与现实的差距
  4. SyncStudy Poster
  5. SQLite | Where 子句
  6. 四十个非常实用的轻量级JavaScript库
  7. 常用JavaScript函数 1 - 15 (自我总结)
  8. 流量 起伏大_广西崇左的德天跨国大瀑布,一半是中国一半是越南,天下奇观!...
  9. aspxgridview将所选项导出ASPxGridViewExporter1
  10. OpenLayers 绘制,选中,鼠标悬浮
  11. CSS3实现的几个小loading效果
  12. 在rhel 7.3中安装glibc-devel-2.17-157.el7.i686包的过程详录
  13. ipad MOV转mp4
  14. 超分算法IPT:Pre-Trained Image Processing Transformer
  15. 查找算法-跳跃表(SkipList)入门及复杂度分析
  16. 使用k-means及k-prototype对混合型数据集进行聚类分析
  17. 使用Stratasys创建3D打印医学模型的工作流程
  18. 工作站的容器化和虚拟化实践
  19. mysql错误代码145_Mysql中出现errno:145的解决方法
  20. Exp6 信息搜集与漏洞扫描 20164303

热门文章

  1. 通过cookie网页与app交互
  2. 第6次博文;使用python 自带得IDLE,写出12星座的符号
  3. 【ACM】漫漫长路——刷题(8)
  4. react 使用 PropTypes 进行类型检查
  5. 微信小程序获取微信运动数据并解密
  6. spring——手动往spring容器中添加对象
  7. 树莓派:Ubuntu MATE 16.04.2 安装 ROS Kinetic Kame 教程
  8. 私人牙科诊所管理系统(含源码+论文+答辩PPT等)
  9. JUnit测试命名规范
  10. 威漫哨兵机器人_当漫威哨兵机器人怼上凤凰之力会如何?强如哨兵首领都跪!...