最近在做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文档相关推荐

  1. 关于java下载Word文档图片显示不全的问题

    关于java 从FTP下载Word文档图片显示不全的问题 最近想实现这样一个功能,从ftp服务器获取word文档下载下来,但是出现了一下问题: 本地启动的tomcat,可以下载word,图片显示正常: ...

  2. java下载word文档到本地

    普通的下载功能,不过依然有一个值得关注的重要点--请看到最后! ***HTML***按钮就不上了,你开心设计成button和a我都没有意见: ***JS***代码: function downLoad ...

  3. 【Java用法】使用Java导出word文档的解决方案(适用于从服务器上下载到本地电脑)

    本文目录 一.Controller 二.Service 接口类 三.ServiceImpl 实现类 四.Content-Type 类型与MIME Type类型对照表 最近在做一个word导出功能,需求 ...

  4. Java预览下载word文档(poi-tl、thymeleaf模板)

    主要功能 预览word文档 生成并下载word文档 实现 前端Vue代码 预览功能主要使用的是docx-preview下载方式如下: npm install docx-preview --save & ...

  5. java 界面艺术字,Java 在Word文档中添加艺术字

    与普通文字相比,艺术字更加美观有趣也更具有辨识度,常见于一些设计精美的杂志或宣传海报中.我们在日常工作中编辑Word文档时,也可以通过添加艺术字体来凸显文章的重点,美化页面排版.这篇文章将介绍如何使用 ...

  6. Java将Word文档转换为PDF的完美工具

    引用至:https://mp.weixin.qq.com/s/JIgo3f98HufGJx23mgtvag Java 将 Word 文档转换为 PDF 的完美工具 在日常工作中,PDF格式良好的视觉阅 ...

  7. 使用java将word文档docx,doc(包含图形,文本框)完美转换成所有格式图片(pdf,png,gif,jpeg等等)

    使用java将word文档docx,doc(包含图形,文本框,图片等)完美转换成所有格式图片(pdf,png,gif,jpeg等等)下文中附带代码,效果图等 思路 使用到的包 实现代码 效果图: 思路 ...

  8. [摘]用Java生成Word文档

    开发中隔三叉五的就要用到Word,经常被搞得不胜其烦,不过这次找到了不少好例子,干脆将他们都摘了过来,内容如下: 1. poi是apache的一个项目,不过就算用poi你可能都觉得很烦,不过不要紧,这 ...

  9. Word处理控件Aspose.Words功能演示:用Java从Word文档中提取文本

    Aspose.Words For .NET是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsof ...

  10. Word处理控件Aspose.Words功能演示:使用 Java 将 Word 文档转换为 Markdown

    大多数智能设备,如智能手机.平板电脑.笔记本电脑等,都支持EPUB格式来查看或阅读文档.它是电子书或电子出版物的常用格式.另一方面,MS Word 格式,如DOCX.DOC等,是数字世界中广泛使用的文 ...

最新文章

  1. css中的垂直居中方法
  2. org.apache.activemq.transport.InactivityIOException: Cannot send, channel has already failed
  3. VTK修炼之道31:图像二值化_阈值法
  4. 1.17.Flink 并行度详解(Parallel)、TaskManager与Slot、Operator Level、Execution Environment Level、Client Level等
  5. C#中dynamic、ExpandoObject 的正确用法
  6. Ubuntu20.04 编译运行apue.3e 避坑指南
  7. python 新闻摘要_每日新闻摘要:Microsoft内部禁止应用程序,这样就可以了
  8. 免安装免配置 还免费的Spark 集群 --Databrickes Spark Clould
  9. 的文件夹结构_用framework7开发APP:6.目录结构
  10. saltstack(十):saltstack数据系统-grains和pillar
  11. php 多维数组怎么表达,php 对多维数组的操作,该怎么解决
  12. Hibernate对象标识符
  13. cvFloodFill() 漫水填充算法
  14. web前端开发面试题(七)
  15. 51单片机硬件基础知识
  16. HTC Vive VR操作规范书
  17. Android展开悬浮窗功能,Android 悬浮窗 (附圆形菜单悬浮窗)
  18. go操作mysql(原生database/sql, sqlx库)GORM
  19. vue-router路由跳转与打开新窗口
  20. 【基于C语言的随机点名器】

热门文章

  1. abaqus2020软件 Linux版本安装教程 超详细安装教程
  2. 网络拓扑图js插件——jTopo应用
  3. C语言运算符和表达式
  4. C#进行注册表项和键值操作
  5. MATLAB从入门到精通 第1章 MATLAB入门
  6. SQL太难学不会?教你如何零基础快速入门
  7. qt plugins 插件框架
  8. 计算机毕业设计JAVA垂钓分享交流网的设计与实现mybatis+源码+调试部署+系统+数据库+lw
  9. b站黑马程序员的python怎么样_如何评价传智播客旗下的黑马程序员?
  10. JAVA正则表达式语法大全