之前只接触过导出excel,当然项目中总会有一些特殊要求,比如这次甲方爸爸要求导出word文档,代码来了。

项目使用的是pom进行管理的,dependency包括下面几个

     <!-- doc  --><dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>2.1.7</version></dependency><dependency><groupId>com.lowagie</groupId><artifactId>itext-rtf</artifactId><version>2.1.7</version></dependency>

下面是自己测试的demo

 public static void main(String[] args) {File f = new File("D:/test.doc");OutputStream fOut = null;try {fOut = new FileOutputStream(f);} catch (FileNotFoundException e) {// TODO 自动生成的 catch 块e.printStackTrace();}List<String> assetCodeList = new ArrayList<String>();for (int i=0; i<10; i++) {assetCodeList.add("code" + i);}//批量导出资产编码exPortQRCodes(assetCodeList, fOut);}

调用的方法是这个。

//这个只是一个基本的演示代码,自己可以进行扩展void exPortQRCodes(List<String> assetCodeList, OutputStream fOut) {try {//创建Document对象(word文档)Rectangle rectPageSize = new Rectangle(PageSize.A4);rectPageSize = rectPageSize.rotate();// 创建word文档,并设置纸张的大小Document doc = new Document(PageSize.A4);//建立一个书写器与document对象关联,通过书写器可以将文档写入到输出流中RtfWriter2.getInstance(doc, fOut);doc.open();if(assetCodeList == null || assetCodeList.size() == 0){Paragraph context = new Paragraph("不存在资产信息");// 正文格式对齐方式context.setAlignment(Element.ALIGN_CENTER);// 与上一段落(标题)的行距context.setSpacingBefore(10);doc.add(context);doc.close();return;}int size = assetCodeList.size();int cols = 3;int tables = size/cols + (size%cols > 0 ? 1: 0);for(int i = 0 ; i < tables; i++){//表格设置(列、行)Table table = new Table(cols, 2);int[] withs = { 33, 33, 34};//设置每列所占比例table.setWidths(withs);//表格所占页面宽度table.setWidth(100);//居中显示table.setAlignment(Element.ALIGN_CENTER);//自动填满table.setBorderWidth(5); // 边框宽度  table.setBorderColor(new Color(0, 125, 255)); // 边框颜色  table.setPadding(12);// 衬距,看效果就知道什么意思了  table.setSpacing(0);// 即单元格之间的间距  table.setBorder(5);// 边框//写入表格第一行的说明for(int idx = 0; idx < cols; idx++){Cell cell = null;if(i*cols + idx >= size){cell = new Cell("");} else {String title = "这个可以显示出来的内容";cell = new Cell(title);}cell.setVerticalAlignment(Element.ALIGN_CENTER);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);}//写入表格第二行的二维码for(int idx = 0; idx < cols; idx++){Cell cell = null;if(i*cols + idx >= size){cell = new Cell("");} else {cell = new Cell("什么东西");}cell.setVerticalAlignment(Element.ALIGN_CENTER);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);}doc.add(table);}doc.close();}  catch (Exception e) {e.printStackTrace();}}

如果是使用到项目当中,那么需要下面的代码,可以根据自己的需要进行修改

 @RequestMapping(value="/downloadQRcode",method=RequestMethod.POST)@ResponseBodypublic void downloadQRcode(HttpServletResponse response) throws IOException {OutputStream fOut = null;fOut = response.getOutputStream();String agent = (String)getHttpRequest().getHeader("USER-AGENT");String fileName = "二维码_" + DateUtil.generateTime();if(agent!=null && agent.toLowerCase().indexOf("firefox")>0){fileName = firefoxFile(fileName);}else{fileName = java.net.URLEncoder.encode(fileName, "UTF-8");}response.setContentType("application/vnd.ms-word");response.setHeader("content-disposition", "attachment;filename=" + fileName + ".doc");String code = this.getHttpRequest().getParameter("code");@SuppressWarnings({ "unchecked", "deprecation" })List<String> codes = JSONArray.toList(JSONArray.fromObject(code), String.class);List<XXX> assetCodeList = xxService.getxxCodes(codes);exPortQRCodes(assetCodeList, fOut);}

快乐编程

知识使我快乐

java实现导出doc文档相关推荐

  1. java循环导出word文档_Java使用freemarker导出word文档

    通过freemarker,以及JAVA,导出word文档. 共分为三步: 第一步:创建模板文件 第二步:通过JAVA创建返回值. 第三步:执行 分别介绍如下: 第一步: 首先创建word文档,按照想要 ...

  2. 【Java实现导出Word文档功能 XDocReport +FreeMarker】

    Java实现导出Word文档功能(XDocReport +FreeMarker) 前言 在日常的开发工作中,我们时常会遇到导出Word文档报表的需求,比如公司的财务报表.医院的患者统计报表.电商平台的 ...

  3. eclipse导出doc文档

    选中需要导出的项目, 1 点击eclipse上面的Project,选择Generate javadoc..., 2 然后配置 javadoc command,比如我本地的路径为: C:\Program ...

  4. Java——EasyPoi导出word文档,itextpdf转换pdf

    EasyPoi导出word文档,itextpdf转换pdf 文章目录 EasyPoi导出word文档,itextpdf转换pdf 前言 一.依赖 二.工具类 1.WordUtil 2.PDF工具类 3 ...

  5. java导出doc文档

    1.右键要导出doc的项目,选择Export 2.选择Javadoc,然后点击next 3.设置command栏中为jdk的javadoc.exe文件的路径,然后选择doc文件的导出路径 3.点击fi ...

  6. Java+freemarker 导出Word文档的实现(包括word for Mac 插入域的方法)-静态数据,动态表格list

    1. 准备环境 1.1 word版本:MacOS系统下的Office360 word for Mac下好多操作和win的不一样啊啊啊,差点栽在Mac word的模版设计上. win版本的word模版设 ...

  7. JAVA 数据导出Word文档模板的功能实现

    对于这个功能,想必也有其他平台会需要吧.比如51job导出文档形式的简历这样.我在这里讲的是用java代码能满足我们实现这一功能的好用的一些方法.废话不多说了. 这种导出word,用XML的方式实现, ...

  8. Java EasyWord导出word文档

    参考链接: https://blog.csdn.net/weixin_47215296/article/details/125149487 上面的文章已经说明了使用方法,我再说下我使用的经历. mav ...

  9. java 动态导出word文档 文档合并分页,浏览器下载,生成,动态表格,加图片

    1.官方文档 Poi-tl Documentation word 模板 准备 .docx 文件 再准备一张图片 一起放到项目的resources目录下 impl层 第一个word文档,第二第三个与第一 ...

最新文章

  1. cli vue 卸载,vue Cli 环境删除与重装教程 - 版本文档
  2. java 输入 方程,用java 编写一程序,求解一元二次方程:aX2+bX+c=0.参数a、b及c从命令行做参数输入 java...
  3. Window 10 :如何彻底关闭:Windows Defender Service(2015-12-20日更新)
  4. 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历(BFS)
  5. 禁用当前的账户win7_拯救你的win7系统,电脑优化到位,打游戏才会流畅
  6. xp,win7,win2003,win2008常用命令集
  7. 面向对象——概念(成员变量、静态变量、成员方法、静态方法、垃圾回收机制、重载、包)...
  8. 小尼机器人_小尼被机器人嫌弃“唱歌难听,长相一般”?
  9. 电脑延迟关机命令Shutdown详解
  10. py 的 第 30 天
  11. CSS鼠标滑过改变样式颜色
  12. python 异常处理_异常处理 — Python 3.7.9 文档
  13. 说一说JavaScript 中的原型ProtoType
  14. tf.slim构建vgg16和resnet网络实现图像分类,亲测准确率99%
  15. msfconsole常用搜索命令search
  16. 行为金融(二):行为金融的心理学基础
  17. C++ 多态(2): 纯虚函数, 抽象类和接口类
  18. 如何改善毛孔粗大,学养颜心经改善毛孔粗大
  19. 利用matlab函数生成运动模糊图像,运动模糊图像,模糊图像,锐化图像
  20. 神经网络不work该怎么办!看看这11条

热门文章

  1. 2019-2020年广州Java面试总结
  2. AZKABAN使用全方位总结
  3. Lazada卖家看过来!Lazada要如何正确选择产品分类?
  4. 服务器操作系统CoreOS初体验
  5. 抓包工具Fiddler初试
  6. unity工程参照以及评价(B)
  7. 毕业设计-基于微信小程序的用药咨询系统
  8. 基于百度paddlehub的OCR车牌识别--在线部署文档
  9. TradeX2-M.dll
  10. 树莓派Linu内核编译