导出数据到具体的word文档里面,word有一定的格式,需要保持不变

这里使用freemarker来实现:

①:设计好word文档格式,需要用数据填充的地方用便于识别的长字符串替换  如  aaaaaaaaaaaaaaaa

②:将word文档另存为 2003 xml格式

③:找到需要替换的地方, 如 将 aaaaaaaaaaaa 修改为 ${userName}

如果是list展示,注意按照如下方式修改:

XXXXXXXXXXXXXXXXXX 原有格式代码 如一行数据或者一个单元格#list>

④:替换完成后,将xml文件后缀修改为ftl

java代码如下:

packagecom.xiao;importjava.io.UnsupportedEncodingException;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;public classMain {public static void main(String[] args) throwsUnsupportedEncodingException {

Map dataMap = new HashMap();

dataMap.put("name", "肖昌伟");

dataMap.put("depart", "云平台");

dataMap.put("date", "2016年");

//列表数据封装

List list1 = new ArrayList();

list1.add("itema");

list1.add("itemb");

list1.add("itemc");

dataMap.put("list1", list1);

DocumentHandler mdoc= newDocumentHandler();

mdoc.createDoc(dataMap,"E:/outFile2.doc");

}

}

packagecom.xiao;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStreamWriter;importjava.io.UnsupportedEncodingException;importjava.io.Writer;importjava.util.Map;importfreemarker.template.Configuration;importfreemarker.template.Template;importfreemarker.template.TemplateException;public classDocumentHandler {private Configuration configuration = null;publicDocumentHandler() {

configuration= newConfiguration();

configuration.setDefaultEncoding("utf-8");

}public void createDoc(Map dataMap, String fileName) throwsUnsupportedEncodingException {//需要导出模板的包路径

configuration.setClassForTemplateLoading(this.getClass(), "/com/xiao");

Template t= null;try{

t= configuration.getTemplate("template.ftl");

}catch(IOException e) {

e.printStackTrace();

}

File outFile= newFile(fileName);

Writer out= null;

FileOutputStream fos= null;try{

fos= newFileOutputStream(outFile);

OutputStreamWriter oWriter= new OutputStreamWriter(fos, "UTF-8");

out= newBufferedWriter(oWriter);

}catch(FileNotFoundException e1) {

e1.printStackTrace();

}try{

t.process(dataMap, out);

out.close();

fos.close();

}catch(TemplateException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

System.out.println("文档导出完成");

}

}

这样就可以看到填充好了数据的word文档,格式和模板设置的保持一致。

ps:

如果是web项目,需要点击下载后弹出另存为或者保存提示框,则请按照下面代码修改,通过reponse将生成的文件以流形式保存到用户指定的位置:

通过web下载文件

publicvoid download(HttpServletRequest request, HttpServletResponse response)throwsException {try{

File f= newFile(文件路径);

FileInputStream fin= newFileInputStream(f);

response.reset();//设置为没有缓存

response.setContentType("application/x-download;charset=GBK");

response.setHeader("Content-Disposition", "attachment;filename="+Util.getGBK_ISO(ft.getFilename()));/*attachment是以附件下载的形式,inline是以线上浏览的形式。当点击“保存”的时候都可以下载,当点击“打开”的时候attachment是在本地机里打开,inline是在浏览器里打开。*/OutputStream output=response.getOutputStream();byte[] buf = new byte[1024];int r = 0;while ((r = fin.read(buf, 0, buf.length)) != -1) {

output.write(buf,0, r);

}

response.getOutputStream().flush();

response.getOutputStream().close();}catch(Exception e) {}

}

建议采用 freemarker-2.3.13.jar 版本,刚开始不是用的这一个版本,遇见了稀奇古怪的问题

java 导出word 带格式_java 导出数据为word文档(保持模板格式)相关推荐

  1. java修改ppt格式_Java 加密、解密PPT文档

    文档加密常通过设置文档打开密码.启用文档编辑时的权限密码等方式:而解密则通过删除原有文档的密码或在此基础上重置新的密码.以下文章内容,将通过Java程序来实现通过以上方式来加密.解密PPT文档. 使用 ...

  2. java pdf 首行缩进_java使用iText生成pdf文档的对齐方式

    一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...

  3. java中sax的使用_java使用sax对xml文档的解析

    随着互联网技术的发展,XML技术变得越来越重要,从而出现了很多 与XML的整合应用方面的技术,SAX就是其中之一.在这里,我就简要 谈谈java怎样使用sax对xml文档的解析. 首先,让我们来谈谈S ...

  4. java后台代码添加超链接_Java 添加超链接至Excel文档

    在Excel文档中,若想快速访问其他文件或网页上的相关信息,可以在工作表单元格中插入超链接.超链接可为文本或图片,链接对象除了网页或其他文档外,也可是邮件.同一文档中其他工作表单元格或网络路径.本文就 ...

  5. java jdom解析xml文件_Java 使用JDOM解析XML文档

    使用JDOM解析XML文档 JDOM是一种使用 XML(标准通用标记语言下的一个子集) 的独特 Java 工具包.下面我们来看一下怎么使用 JDOM来解析XML文档. 首先下载JDOM的jar包,并导 ...

  6. 如何通过Java导出带格式的 Excel 数据到 Word 表格

    在Word中制作报表时,我们经常需要将Excel中的数据复制粘贴到Word中,这样则可以直接在Word文档中查看数据而无需打开另一个Excel文件.但是如果表格比较长,内容就会存在一定程度的丢失,无法 ...

  7. 导出word文档生成docx格式 添加水印

    为了导出docx格式看了等多文档,最后做个总结依赖包用到dom4j和freemarker,最为方便. <!-- https://mvnrepository.com/artifact/freema ...

  8. word格式:导出与导入(如何将一套格式样式应用于另一个文档)- 教程篇

    如何把一个word文档里的格式.样式用于另一个文档? 引文地址

  9. echarts 图表导出PDF(带滚动条)/图片导出PDF

    echarts 图表导出PDF[带滚动条]/图片导出PDF 效果展示 提出问题 思考问题 解决问题 导出PDF 里面的页头中文乱码问题 参数说明 效果展示 提出问题 在开发过程中,有需求是将展示出来的 ...

  10. 利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出

    我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的 ...

最新文章

  1. 容器集群管理平台的比较
  2. 在哪里学python好-自学python好还是去培训机构好?
  3. spring事务的传播特性
  4. Android环境的安装遇到的问题
  5. php curl登陆邮箱,php利用CURL函数登入163邮箱并获取自己的通讯录
  6. 基于JQuery框架的AJAX
  7. HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容
  8. TikTok最适合普通小白的赚钱方法?
  9. opencv 寻找图中的corners 利用自带 Shi-Tomasi Corner Detector 实现
  10. php获取服务器类型,php获取服务器操作系统类型的方法
  11. 理解vue中的父组件,子组件
  12. Atitit 异常机制与异常处理的原理与概论
  13. c语言printf()输出格式大全(转载)
  14. 起薪8000年终40万 游戏行业人才缺口达60万
  15. 重庆大学计算机学院学术委员会,学术委员会
  16. RCF—用于C++的进程间通讯(4)
  17. 男人很容易喜欢一个女人,却不轻易深爱一个女人。
  18. 你想成为一个什么样的面试官?
  19. idea项目老是重启_idea反复重启服务器
  20. Java 9 与 Java 10

热门文章

  1. 解决antdv flex布局,表格过长不能够自适应问题
  2. ctfshow简单密码题
  3. 网页文件分片上传,断点续传
  4. Python计算基尼系数实践笔记(案例+代码+视频+列表推导式)
  5. 键盘按键怎样重启电脑
  6. 大道至简——浅谈机器学习分类模型选择
  7. kali伪装win10
  8. 一个屌丝程序员的青春(二四八)
  9. 7. 输入/输出系统
  10. 各大机构紧急调整,教培机构如何转型?