问题:功能已经实现,需求升级后要求模板可以自己上传,然后下载对应报告。把原来的模板稍加改动后,上传下载word打不开。

解决:wps改动的原来的模板,用office修改保存就没问题了。

原理:不知道。

实现代码:

 public static void getMoBanDoc(HttpServletRequest req, HttpServletResponse response, Map<String, String> map, String path, String temppath, String filename){Properties properties = ConfigProperties.getProperties();String tempFile = properties.getProperty("temp.path");File dirFile = new File(tempFile);if (!dirFile.exists()) {dirFile.mkdirs();}String realPath = properties.getProperty("doc.path") + path;try {InputStream fileInputStream = new FileInputStream(realPath);// 读取文本内容HWPFDocument document = new HWPFDocument(fileInputStream);Range bodyRange = document.getRange();// 替换内容for (Map.Entry<String, String> entry : map.entrySet()) {bodyRange.replaceText("{$" + entry.getKey() + "}", String.valueOf(entry.getValue()));}ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();document.write(byteArrayOutputStream);FileOutputStream outputStream = new FileOutputStream(temppath);outputStream.write(byteArrayOutputStream.toByteArray());outputStream.flush();byteArrayOutputStream.close();outputStream.close();File file = new File(temppath);response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=UTF-8");response.setContentType("application/msword");response.setHeader("Content-disposition", "attachment; filename=" + new String(filename.getBytes("utf-8"), "ISO8859-1"));response.setHeader("Content-Length", String.valueOf(file.length()));//读取目标文件InputStream in = new FileInputStream(file);//通过response将目标文件写到客户端OutputStream out = response.getOutputStream();// 写文件int b;while ((b = in.read()) != -1) {out.write(b);}out.flush();in.close();out.close();fileInputStream.close();} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}return;}

【java】poi word模板生成报告后打不开问题相关推荐

  1. JAVA实现模板word文档导入,Java依据word模板生成word文档之后台解析和实现及部分代码(一)...

    Java根据word模板生成word文档之后台解析和实现及部分代码(一) 后台主要工作是解析XML定义的标签文件,并获取到数据集,放入到Map中,然后调用Jacob.jar中提供的相关方法来实现替换. ...

  2. Java poi word模板填充数据、复制行删除行

    Java poi word模板填充数据 1.明细表格式 ${list_xxxxx} 普通格式 ${xxxxxx} 2.replaceInTable方法中 table.removeRow(2); 第三行 ...

  3. java 根据word模板生成word文件

    Java可以使用Apache POI库来生成Word文件,并且也可以使用freemarker等模板引擎来实现根据Word模板生成Word文件的功能. 下面是一个简单的示例代码,可以帮助您快速入门. 模 ...

  4. java根据word模板生成pdf

    java根据word模板动态赋值某些字段,然后生成pdf,参考文档:http://deepoove.com/poi-tl/#_why_poi_tl

  5. poi-tl 用word模板生成报告

    采用的技术poitl: 官网地址:Poi-tl Documentation github地址:GitHub - Sayi/poi-tl: Generate awesome word(docx) wit ...

  6. JAVA根据word模板生成合同,并能实现网页在线浏览/打印/下载

    最近, 项目有这样一个需求:       根据我选择的模板(docx文件),和我表单填的数据,生成相应的合同文件(docx),该合同要能网页在线浏览/打印/下载在合同中还要放置签字图片和身份证图片 我 ...

  7. JAVA Freemarker + Word 模板 生成 Word 文档 (变量替换,数据的循环,表格数据的循环,以及图片的东替换)...

    1,最近有个需求,动态生成 Word 文当并供前端下载,网上找了一下,发现基本都是用 word 生成 xml 然后用模板替换变量的方式 1.1,这种方式虽然可行,但是生成的 xml 是在是太乱了,整理 ...

  8. Java根据word模板生成word文档并转成PDF文件

    1. 处理word模板 1.1 定义word模版 1.2 定义完我们的模板之后,我们要将文档保存为xml的格式 定义完我们的模板之后,我们要将文档保存为xml的格式 1.3 xml格式化 生成的xml ...

  9. java 使用word模板生成word

    一:导入jar 可能用不到这么多 <dependency> <groupId>org.apache.poi</groupId> <artifactId> ...

最新文章

  1. 如果编程语言是飞机 | 每日趣闻
  2. 求长度的另一种方法(+obj).Length
  3. Openstack Restful API 开发框架 Paste + PasteDeploy + Routes + WebOb
  4. 机器人学习--栅格地图(occupancy grid map)构建(部分代码解析)
  5. Nginx服务的信号控制之USR2
  6. halcon Matching-3D 3D匹配,持续更新
  7. java中的tcp与多线程_Java5 多线程与TCP编程实践
  8. oc_转_类的数组的实现和操作
  9. arduino舵机代码_Arduino如何同时使用多个串口
  10. 剑指offer面试题54. 二叉搜索树的第k大节点(逆中序遍历)
  11. linux gt240驱动下载,NV显卡Linux驱动195.36.08版发布
  12. 关于写好一篇英文学术论文(及搞好本领域学术研究)的一些想法
  13. Kylin使用Spark构建Cube
  14. mysql临界锁_mysql锁
  15. javscript创建Emitter
  16. python网页转PDF
  17. vue首屏加载速度慢_Vue首屏加载速度优化如何提升80%?本文详解
  18. 天荒地老修仙功-第六部第二篇:Spring Cloud Eureka自我保护机制
  19. 沈博研:你一定要看的黄金投资优势分析!
  20. Monkey测试命令笔记

热门文章

  1. 如何更改MindMapper中的默认样式
  2. python-如何爬取天猫店铺的商品信息
  3. Google 地图- 基本地图类型
  4. 习题 11.1 将例11.1的程序片断补充和改写成一个完整、正确的程序,用公用继承方式。在程序中应包括输入数据的函数,在程序运行时输入num,name,sex,age,addr的值,程序应输出以上。。
  5. 74 ----平面直角坐标变换: 平移、旋转、伸缩
  6. 如何科学(mianfei)使用百度文库
  7. SAP中MD04中交货计划行例外信息07的分析
  8. 国内大陆有哪些芯片公司处于世界前10?一起看看!
  9. 线性时不变系统——信号系统学习笔记
  10. Arch Linux 系统迁移