public void dayinHw(HttpServletRequest request, HttpServletResponse response){
String id = request.getParameter("id");
Outdoorads od = this.outdooradsService.queryById(id);
HWPFDocument hdt=null;
try {
//第一步读取项目中word模板文件
String fileDir = new File(request.getRealPath("/")+"/doc/").getCanonicalPath();
FileInputStream in = new FileInputStream(new File(fileDir+ "/户外宣传品申请表.doc"));

// 第二步,创建一个HWPFDocument,对应读取的一个doc文件
hdt = new HWPFDocument(in);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//第三步替换读取到的word模板内容的指定字段
Range range = hdt.getRange();//读取word文本内容
Map<String, String> map = new HashMap<String, String>();//将需要填充的字段放入map中
if(StringUtil.isNotEmpty(od.getTitle())){
map.put("title",od.getTitle());
}else{
map.put("title","");
}
if(od.getConduct_date() != null){
map.put("conduct_date",DateTool.dateToStr1(od.getConduct_date()));
}else{
map.put("conduct_date","");
}
if(StringUtil.isNotEmpty(od.getConduct_address())){
map.put("conduct_address",od.getConduct_address());
}else{
map.put("conduct_address","");
}

for (Map.Entry<String, String> entry : map.entrySet()) {
if(entry.getValue()!=null){
range.replaceText(entry.getKey(), entry.getValue());//替换文本内容
}else{
range.replaceText(entry.getKey(), "");//替换文本内容
}

}
dayin(request, response, hdt);
}
public void dayin(HttpServletRequest request, HttpServletResponse response, HWPFDocument hdt){
//*********************wangyaStart*********************************
try{
//路径
String destPathName = request.getRealPath("/") + "//";
File dirPath = new File(destPathName);
if (!dirPath.exists()) {
dirPath.mkdirs();
}
// 生成文件名
String curDate = String.valueOf(new java.util.Date().getTime());
String Filename = dirPath + "//" +"户外宣传品申请表.doc";
//写入数据
FileOutputStream fout = new FileOutputStream(Filename);
hdt.write(fout);
fout.close();

BufferedInputStream bis = null;
BufferedOutputStream bos = null;
//输出word内容文件流,提供下载

String fileNameTemp = URLEncoder.encode("户外宣传品申请表.doc", "utf-8");
request.setCharacterEncoding("GBK");
response.reset();
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename=\""+ fileNameTemp + "\"");
OutputStream outs = response.getOutputStream();

bis = new BufferedInputStream(new FileInputStream(Filename));
bos = new BufferedOutputStream(outs);

byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
bis.close();
bos.flush();
bos.close();
}catch(Exception e){
e.printStackTrace();
}
}

java导出word的更多相关文章

  1. java导出word的6种方式(复制来的文章)

    来自: http://www.cnblogs.com/lcngu/p/5247179.html 最近做的项目,需要将一些信息导出到word中.在网上找了好多解决方案,现在将这几天的总结分享一下. 目前 ...

  2. java导出word文件

    java导出word文件 test5.ftl文件生存方法, 第一步:用word新建test5.doc,填写完整模板,将需导出数据用${}代替 第二步:将test5.doc另存为test5.xml 第三 ...

  3. [转载]java导出word的5种方式

    在网上找了好多天将数据库中信息导出到word中的解决方案,现在将这几天的总结分享一下.总的来说,java导出word大致有5种解决方案: 1:Jacob是Java-COM Bridge的缩写,它在Ja ...

  4. [原创]java导出word的5种方式

    在网上找了好多天将数据库中信息导出到word中的解决方案,现在将这几天的总结分享一下.总的来说,java导出word大致有5种解决方案: 1:Jacob是Java-COM Bridge的缩写,它在Ja ...

  5. java导出word的6种方式(转发)

    来自: http://www.cnblogs.com/lcngu/p/5247179.html 最近做的项目,需要将一些信息导出到word中.在网上找了好多解决方案,现在将这几天的总结分享一下. 目前 ...

  6. java导出word直接下载

    导出word工具类 package util; import java.io.IOException; import java.io.Writer; import java.util.Map; imp ...

  7. java 导出word 并下载

    记录一下导出操作 源码: /************ * 导出word 并下载 * @param id 房号记录编号 * ***********************/ @RequestMappin ...

  8. Freemarker + xml 实现Java导出word

    前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选择功能强大的freemarker+固定格式之后的wordxml实现导出功能.导出word的代码是可 ...

  9. Java导出Word利用freemarker(含图片)

    制作Word模版 建议使用高版本的office做,尽量不要用WPS做,生成xml会出现乱码 编码要统一,推荐UTF-8 建好模板,将模板另存为xml格式,建议原来模板不要删,xml的如果后期打不开,还 ...

  10. java导出word(带图片)

    public class CreateWordDemo { public void createDocContext(String file) throws DocumentException,IOE ...

随机推荐

  1. jq自定义多选下拉列表框

    多选选择国家插件 https://gitee.com/richard1015/dropDownList

  2. javascript同步分页

    目前网上分页的例子比较多,但是对其原理不是很了解,平时用的时候只是拿来调用,今天花了点时间,采用面向对象方式写了一个demo.对其方法做了封装,对外只提供一个调用接口. window.loadPage ...

  3. Sql Server 常用事务处理总结

    在数据库操作中,常用事务写法: 1. 通过 @@error 判断一批sql 执行完毕,是否有异常.  @@error 为系统变量,每次执行完 sql 都会返回一个数值,  0 表示 执行成功 ,非0 ...

  4. hdu 2018递推

    第n月的牛的数量由第n-1个月的老牛加上n-1个月新生的小牛,得到公式F(n)=F(n-1)+F(n-3) AC代码: #include<cstdio> const int maxn=55 ...

  5. Springdata mongodb 版本兼容 引起 Error [The 'cursor' option is required, except for aggregate with the explain argument

    在Spring data mongodb 中使用聚合抛出异常 mongodb版本 为 3.6 org.springframework.dao.InvalidDataAccessApiUsageExce ...

  6. Enable multi-tenancy on ironic

    Multi-tenancy 是openstack ironic从Ocata版本开始支持的新特性,通过network-generic-switch插件控制交换机,Ironic可以实现在不同租户间机网络隔 ...

  7. sizeof计算空间大小的总结

    sizeof,看起来还真不简单,总结起来还是一大堆的东西,不过这是笔试面试中出现比较频繁的,我也是考过才觉得很重要,有些规则如果不注意,还真是拿到一道题目摸不着头脑,所有总结一下,方面忘记的时候瞄一瞄 ...

  8. JLINK 10针J和20针JTAG接口连接方法

    我的JLINK终于用上了,哈哈,好开心,终于不用考虑是不是要借用别人的PC机了,昨天到城隍庙电子市场忙活了一下午,终于算是满载而归,呵呵,好了,下面说一下接法,其实根本不需要什么转接板什么的,直接把相 ...

  9. linux下FFmpeg编译生成ffplay

    1.确认Makefile中指定的config.mak(在ffmpeg根目录下)中:CONFIG_FFPLAY=yes,如果不是需要重新./configure 该处还有ffmpeg.ffprobe.ff ...

  10. Java中的a++和++a的区别

    1.a++和++a的区别 a++表示先将a放在表达式中运算,然后再加1: ++a表示先将a加1,然后再放在表达式中运算 2.实例 (1)Java代码 /** * @Title:JiaJia.java ...