之前只接触过导出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. python中get和set使用_Python对象属性的set和get方法
  2. ORB_SLAM安装问题error: ‘std::chrono::monotonic_clock’ has not been declared
  3. 学习css3中的动画
  4. Zookeeper 安装和配置---学习一
  5. 一天搞懂深度学习—学习笔记3(RNN)
  6. 计算机硬盘没容量了,电脑硬盘容量怎么突然变少了
  7. 无人机学习笔记 8 雷达工作波段划分
  8. 威斯康星麦迪逊计算机专业排名,威斯康星大学麦迪逊分校计算机工程排名
  9. irq: nobody cared (try booting with the “irqpoll” option)
  10. 保姆式Cocos合成大西瓜案例
  11. 马士兵MCA架构师读书笔记
  12. GD32F310 (二) 按键轮询输入
  13. LeetCode——974.和可被K整除的子数组
  14. ubuntu源换成清华源_Ubuntu替换国内源(清华源)
  15. 广东首例!涉“人脸识别”公民个人信息保护民事公益诉讼案宣判
  16. pytorch(4)Pytorch模型训练时从CPU与GPU之间的转换
  17. 菜鸟教程—SQL测验
  18. 记录生活:绩优票之皖维高新
  19. 机器学习高数基础-集合和实数集
  20. 常用密码加密md5值,123456,admin,admin888

热门文章

  1. 农行网银支付API ASP接口
  2. 301跳转 https_宝塔面板转https(ssl)后设置301跳转将http跳转到https
  3. 设计模式:(策略模式)
  4. 数据与广告系列八:广告与二类电商
  5. 吓skr人了!网站莫名跳转,真相竟然是这样……
  6. 常微分实验(1.1) 变量分离方程与变量变换
  7. 简单而不平凡-登陆验证
  8. 推荐系统:矩阵分解(Matrix factorization)
  9. 设置电脑颜色保护眼睛
  10. linux shell脚本攻略 第二章 命令之乐 cat,find,tr,sort,uniq,split等