JAVA 下载Word文档
最近在做java中页面下载word文档,给大家分享一下。
我的环境是MyEclipse10 , JDK1.6 ,Tomcat 6,我这里使用的是FreeMarker。FreeMarker是一个引擎模板。点击了解
FreeMarker。好了,废话不多说直接上代码
一。首先我们需要制作一个ftl模板,这样freemarker才能识别模板
我们新建一个word文档,非常简单的word生成
然后我们将这个word文档另存为xml格式,然后我们用notepad++ 或者其他编辑器打开它
这里使用notepad++ 打开。格式是不存在的我们需要调一下他的格式
们需要通过Plugin Manager进行安装插件。更郁闷的是7.5版本之后notepad++就不带Plugin Manager这一功能了。
当然我么可以通过https://blog.csdn.net/yuan_ren_sheng/article/details/80555430 这里进行下载安装,这里不再阐述
下载好以后我们点击Show Plugin Manager 找到xml Tools进行安装。安装好
通过这里Pretty开头的,我们把xml文件全选。然后随便点Pretty开头的方法。有的人notepad++上面没有XML Tools
格式调好了,然后把他转换成ftl结尾
写一个工具类
package 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.Map;import freemarker.template.Configuration;
import freemarker.template.Template;
@SuppressWarnings("deprecation")
public class DownUtil {private static Configuration configuration = null;private static HashMap<String, Template> allTemplates = null;static { configuration = new Configuration(); configuration.setDefaultEncoding("utf-8"); configuration.setClassForTemplateLoading(DownUtil.class,"/ftl/"); /* * allTemplates = new HashMap<>(); // Java 7 钻石语法 */ allTemplates = new HashMap<String, Template>(); try { allTemplates.put("resume", configuration.getTemplate("word3.ftl")); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } } private DownUtil() { throw new AssertionError(); } public static File createDoc(Map<?, ?> dataMap, String type) { String name = "temp" + (int) (Math.random() * 100000) + ".doc"; File f = new File(name); Template t = allTemplates.get(type); try { // 这个地方不能使用FileWriter因为需要指定编码类型否则生成的Word文档会因为有无法识别的编码而无法打开 Writer w = new OutputStreamWriter(new FileOutputStream(f), "utf-8"); t.process(dataMap, w); w.close(); } catch (Exception ex) { ex.printStackTrace(); throw new RuntimeException(ex); } return f; }
}
web.xml
<servlet><servlet-name>HelloWorld</servlet-name><servlet-class>servlet.download</servlet-class></servlet><servlet-mapping><servlet-name>HelloWorld</servlet-name><url-pattern>/HelloWorld</url-pattern></servlet-mapping>
这里直接访问HelloWorld让他触发浏览器下载引擎。
Servlet层
package servlet;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import utils.DownUtil;public class download extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {req.setCharacterEncoding("utf-8"); Map<String, Object> map = new HashMap<String, Object>();
/* Enumeration<String> paramNames = req.getParameterNames(); // 通过循环将表单参数放入键值对映射中 while (paramNames.hasMoreElements()) { String key = paramNames.nextElement(); String value = req.getParameter(key); map.put(key, value); }*/ map.put("topic", "我是标题"); map.put("module", "我是模块"); // 提示:在调用工具类生成Word文档之前应当检查所有字段是否完整 // 否则Freemarker的模板殷勤在处理时可能会因为找不到值而报错 这里暂时忽略这个步骤了 File file = null; InputStream fin = null; ServletOutputStream out = null; try { // 调用工具类WordGenerator的createDoc方法生成Word文档 file = DownUtil.createDoc(map, "resume"); fin = new FileInputStream(file); resp.setCharacterEncoding("utf-8"); resp.setContentType("application/msword"); // 设置浏览器以下载的方式处理该文件默认名为resume.doc resp.addHeader("Content-Disposition","attachment;filename=resume.doc"); out = resp.getOutputStream(); byte[] buffer = new byte[512]; // 缓冲区 int bytesToRead = -1; // 通过循环将读入的Word文件的内容输出到浏览器中 while ((bytesToRead = fin.read(buffer)) != -1) { out.write(buffer, 0, bytesToRead); } } finally { if (fin != null) fin.close(); if (out != null) out.close(); if (file != null) file.delete(); // 删除临时文件 } }}
JAVA 下载Word文档相关推荐
- 关于java下载Word文档图片显示不全的问题
关于java 从FTP下载Word文档图片显示不全的问题 最近想实现这样一个功能,从ftp服务器获取word文档下载下来,但是出现了一下问题: 本地启动的tomcat,可以下载word,图片显示正常: ...
- java下载word文档到本地
普通的下载功能,不过依然有一个值得关注的重要点--请看到最后! ***HTML***按钮就不上了,你开心设计成button和a我都没有意见: ***JS***代码: function downLoad ...
- 【Java用法】使用Java导出word文档的解决方案(适用于从服务器上下载到本地电脑)
本文目录 一.Controller 二.Service 接口类 三.ServiceImpl 实现类 四.Content-Type 类型与MIME Type类型对照表 最近在做一个word导出功能,需求 ...
- Java预览下载word文档(poi-tl、thymeleaf模板)
主要功能 预览word文档 生成并下载word文档 实现 前端Vue代码 预览功能主要使用的是docx-preview下载方式如下: npm install docx-preview --save & ...
- java 界面艺术字,Java 在Word文档中添加艺术字
与普通文字相比,艺术字更加美观有趣也更具有辨识度,常见于一些设计精美的杂志或宣传海报中.我们在日常工作中编辑Word文档时,也可以通过添加艺术字体来凸显文章的重点,美化页面排版.这篇文章将介绍如何使用 ...
- Java将Word文档转换为PDF的完美工具
引用至:https://mp.weixin.qq.com/s/JIgo3f98HufGJx23mgtvag Java 将 Word 文档转换为 PDF 的完美工具 在日常工作中,PDF格式良好的视觉阅 ...
- 使用java将word文档docx,doc(包含图形,文本框)完美转换成所有格式图片(pdf,png,gif,jpeg等等)
使用java将word文档docx,doc(包含图形,文本框,图片等)完美转换成所有格式图片(pdf,png,gif,jpeg等等)下文中附带代码,效果图等 思路 使用到的包 实现代码 效果图: 思路 ...
- [摘]用Java生成Word文档
开发中隔三叉五的就要用到Word,经常被搞得不胜其烦,不过这次找到了不少好例子,干脆将他们都摘了过来,内容如下: 1. poi是apache的一个项目,不过就算用poi你可能都觉得很烦,不过不要紧,这 ...
- Word处理控件Aspose.Words功能演示:用Java从Word文档中提取文本
Aspose.Words For .NET是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsof ...
- Word处理控件Aspose.Words功能演示:使用 Java 将 Word 文档转换为 Markdown
大多数智能设备,如智能手机.平板电脑.笔记本电脑等,都支持EPUB格式来查看或阅读文档.它是电子书或电子出版物的常用格式.另一方面,MS Word 格式,如DOCX.DOC等,是数字世界中广泛使用的文 ...
最新文章
- css中的垂直居中方法
- org.apache.activemq.transport.InactivityIOException: Cannot send, channel has already failed
- VTK修炼之道31:图像二值化_阈值法
- 1.17.Flink 并行度详解(Parallel)、TaskManager与Slot、Operator Level、Execution Environment Level、Client Level等
- C#中dynamic、ExpandoObject 的正确用法
- Ubuntu20.04 编译运行apue.3e 避坑指南
- python 新闻摘要_每日新闻摘要:Microsoft内部禁止应用程序,这样就可以了
- 免安装免配置 还免费的Spark 集群 --Databrickes Spark Clould
- 的文件夹结构_用framework7开发APP:6.目录结构
- saltstack(十):saltstack数据系统-grains和pillar
- php 多维数组怎么表达,php 对多维数组的操作,该怎么解决
- Hibernate对象标识符
- cvFloodFill() 漫水填充算法
- web前端开发面试题(七)
- 51单片机硬件基础知识
- HTC Vive VR操作规范书
- Android展开悬浮窗功能,Android 悬浮窗 (附圆形菜单悬浮窗)
- go操作mysql(原生database/sql, sqlx库)GORM
- vue-router路由跳转与打开新窗口
- 【基于C语言的随机点名器】