【java】poi word模板生成报告后打不开问题
问题:功能已经实现,需求升级后要求模板可以自己上传,然后下载对应报告。把原来的模板稍加改动后,上传下载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模板生成报告后打不开问题相关推荐
- JAVA实现模板word文档导入,Java依据word模板生成word文档之后台解析和实现及部分代码(一)...
Java根据word模板生成word文档之后台解析和实现及部分代码(一) 后台主要工作是解析XML定义的标签文件,并获取到数据集,放入到Map中,然后调用Jacob.jar中提供的相关方法来实现替换. ...
- Java poi word模板填充数据、复制行删除行
Java poi word模板填充数据 1.明细表格式 ${list_xxxxx} 普通格式 ${xxxxxx} 2.replaceInTable方法中 table.removeRow(2); 第三行 ...
- java 根据word模板生成word文件
Java可以使用Apache POI库来生成Word文件,并且也可以使用freemarker等模板引擎来实现根据Word模板生成Word文件的功能. 下面是一个简单的示例代码,可以帮助您快速入门. 模 ...
- java根据word模板生成pdf
java根据word模板动态赋值某些字段,然后生成pdf,参考文档:http://deepoove.com/poi-tl/#_why_poi_tl
- poi-tl 用word模板生成报告
采用的技术poitl: 官网地址:Poi-tl Documentation github地址:GitHub - Sayi/poi-tl: Generate awesome word(docx) wit ...
- JAVA根据word模板生成合同,并能实现网页在线浏览/打印/下载
最近, 项目有这样一个需求: 根据我选择的模板(docx文件),和我表单填的数据,生成相应的合同文件(docx),该合同要能网页在线浏览/打印/下载在合同中还要放置签字图片和身份证图片 我 ...
- JAVA Freemarker + Word 模板 生成 Word 文档 (变量替换,数据的循环,表格数据的循环,以及图片的东替换)...
1,最近有个需求,动态生成 Word 文当并供前端下载,网上找了一下,发现基本都是用 word 生成 xml 然后用模板替换变量的方式 1.1,这种方式虽然可行,但是生成的 xml 是在是太乱了,整理 ...
- Java根据word模板生成word文档并转成PDF文件
1. 处理word模板 1.1 定义word模版 1.2 定义完我们的模板之后,我们要将文档保存为xml的格式 定义完我们的模板之后,我们要将文档保存为xml的格式 1.3 xml格式化 生成的xml ...
- java 使用word模板生成word
一:导入jar 可能用不到这么多 <dependency> <groupId>org.apache.poi</groupId> <artifactId> ...
最新文章
- 如果编程语言是飞机 | 每日趣闻
- 求长度的另一种方法(+obj).Length
- Openstack Restful API 开发框架 Paste + PasteDeploy + Routes + WebOb
- 机器人学习--栅格地图(occupancy grid map)构建(部分代码解析)
- Nginx服务的信号控制之USR2
- halcon Matching-3D 3D匹配,持续更新
- java中的tcp与多线程_Java5 多线程与TCP编程实践
- oc_转_类的数组的实现和操作
- arduino舵机代码_Arduino如何同时使用多个串口
- 剑指offer面试题54. 二叉搜索树的第k大节点(逆中序遍历)
- linux gt240驱动下载,NV显卡Linux驱动195.36.08版发布
- 关于写好一篇英文学术论文(及搞好本领域学术研究)的一些想法
- Kylin使用Spark构建Cube
- mysql临界锁_mysql锁
- javscript创建Emitter
- python网页转PDF
- vue首屏加载速度慢_Vue首屏加载速度优化如何提升80%?本文详解
- 天荒地老修仙功-第六部第二篇:Spring Cloud Eureka自我保护机制
- 沈博研:你一定要看的黄金投资优势分析!
- Monkey测试命令笔记
热门文章
- 如何更改MindMapper中的默认样式
- python-如何爬取天猫店铺的商品信息
- Google 地图- 基本地图类型
- 习题 11.1 将例11.1的程序片断补充和改写成一个完整、正确的程序,用公用继承方式。在程序中应包括输入数据的函数,在程序运行时输入num,name,sex,age,addr的值,程序应输出以上。。
- 74 ----平面直角坐标变换: 平移、旋转、伸缩
- 如何科学(mianfei)使用百度文库
- SAP中MD04中交货计划行例外信息07的分析
- 国内大陆有哪些芯片公司处于世界前10?一起看看!
- 线性时不变系统——信号系统学习笔记
- Arch Linux 系统迁移