1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。DLL动态链接库的生成需要windows平台的支持。该方案只能在windows平台实现,是其局限性。

2:Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件。他的excel处理很强大,对于word还局限于读取,目前只能实现一些简单文件的操作,不能设置样式。

3:Java2word是一个在java程序中调用 MS Office Word 文档的组件(类库)。该组件提供了一组简单的接口,以便java程序调用他的服务操作Word 文档。 这些服务包括: 打开文档、新建文档、查找文字、替换文字,插入文字、插入图片、插入表格,在书签处插入文字、插入图片、插入表格等。填充数据到表格中读取表格数据 ,1.1版增强的功能: 指定文本样式,指定表格样式。如此,则可动态排版word文档。是一种不错的解决方案。

4:iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。功能强大。

5:JSP输出样式,该方案实现简单,但是处理样式有点缺陷,简单的导出可以使用。

6:用XML做就很简单了。Word从2003开始支持XML格式,大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出Doc。经测试这样方式生成的word文档完全符合office标准,样式、内容控制非常便利,打印也不会变形,生成的文档和office中编辑文档完全一样。

综合以上资料的参考,和网上的一些意见,最后我选择了,第6种用xml做导出方案。

下面是基本的例子,以实现简单的word导出:

要导出的word模板的内容,启动拼音部分为要在代码种替换的部分。

然后将word另存为.xml文件,打开文件,找到title将其修改为${title},后面要替换的内容依次替换掉。然后将.xml文件后缀改为.ftl,导入.ftl模板文件到指定目录。加载jar包freemarker.jar。开始写代码:

主要代码:

public classWordTest {private Configuration configuration = null;publicWordTest(){

configuration= newConfiguration();

configuration.setDefaultEncoding("UTF-8");

}public static voidmain(String[] args) {

WordTest test= newWordTest();

test.createWord();

}public voidcreateWord(){

Map dataMap=new HashMap();

getData(dataMap);

configuration.setClassForTemplateLoading(this.getClass(), "");//模板文件所在路径

Template t=null;try{

t= configuration.getTemplate("测试.ftl"); //获取模板文件

} catch(IOException e) {

e.printStackTrace();

}

File outFile= new File("D:/outFile"+Math.random()*10000+".doc"); //导出文件

Writer out = null;try{

out= new BufferedWriter(new OutputStreamWriter(newFileOutputStream(outFile)));

}catch(FileNotFoundException e1) {

e1.printStackTrace();

}try{

t.process(dataMap, out);//将填充数据填入模板文件并输出到目标文件

} catch(TemplateException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

}private void getData(MapdataMap) {

dataMap.put("title", "标题");

dataMap.put("nian", "2016");

dataMap.put("yue", "3");

dataMap.put("ri", "6");

dataMap.put("shenheren", "lc");

List> list = new ArrayList>();for (int i = 0; i < 10; i++) {

Map map = new HashMap();

map.put("xuehao", i);

map.put("neirong", "内容"+i);

list.add(map);

}

dataMap.put("list", list);

}

}

修改.ftl文件,找到列表所在位置,将其要加入的列表加入到文件中。在列表前加入(在它的头上加一个),并在结尾加上#list>。修改list内容,在要输出的名字前面加上l.。如xuehao,修改为l.xuehao。这样有点像EL表达式的使用。

参考帖子:

java 导出word简历_java导出生成word(类似简历导出)相关推荐

  1. java 调用word插件_java一键生成word操作,比poi简单

    [Java] 纯文本查看 复制代码package com.jeeplus.modules.fact.util; import java.io.BufferedInputStream; import j ...

  2. Java中利用freemarker模板动态生成word含表格

    最近公司有导出word的需求,由于word的样式有的很复杂所以记录一下Java中利用freemarker模板动态生成word含表格,以防以后忘记. 1.word表格的模板 删掉无用的数据留下基础的样式 ...

  3. Python-生成word、docs文件[生成word文档]

    Python-生成word.docs文件[生成word文档] 方法一:写入新建文档 安装第三方库 实现代码 运行结果 注意 方法二:运用模板写入word文档 安装第三方库 创建模板或修改模板 实现代码 ...

  4. Java技术:SpringBoot集成FreeMarker生成word文件

                    今天给大家分享SpringBoot集成FreeMarker模板引擎生成word文件的用法,感兴趣的可以学一下,完整源码地址在文章末尾处,欢迎互相沟通交流! 一.什么是F ...

  5. java ajax 导出excel文件_springMVC(4)---生成excel文件并导出

    springMVC(4)---生成excel文件并导出 在开发过程中,需要将数据库中的数据以excel表格的方式导出. 首先说明.我这里用的是Apache的POI项目,它是目前比较成熟的HSSF接口, ...

  6. java如何根据模板填充数据生成word文档

    java根据模板填充数据生成word文档 这篇文章干什么? 思路总览 1.准备word模板 2.转换文件格式 3.编写代码 补充--下载流 这篇文章干什么?   使用代码将word模板内容进行替换,并 ...

  7. Java Web项目中使用Freemarker生成Word文档

    Web项目中生成Word文档的操作屡见不鲜,基于Java的解决方案也是很多的,包括使用Jacob.Apache POI.Java2Word.iText等各种方式,其实在从Office 2003开始,就 ...

  8. Java使用FreeMarker模版技术动态生成word实践

    一.序言 在日常开发中,常常有动态word文件生成的需求,通过编制模版,然后动态修改word内容以组合成新的文件.报告单.请假单.发票页等都可以使用动态生成word来解决. 笔者总结归纳出通用技术要点 ...

  9. POI利用word模板动态生成word报表以及动态生成word表格

    目录 核心依赖 动态表格 测试类 工具类 动态数据 测试类 工具类 核心依赖 <dependency><groupId>org.apache.poi</groupId&g ...

  10. php 内容自动生成word文档,php生成word文档的例子

    /** * 生成word文档 * * @param string $html 内容部分 * @param string $file 文件名称 * @param string $code 当前文件编码, ...

最新文章

  1. 独家|盘点5个TensorFlow和机器学习课程,程序员福利(附资源)
  2. opencv调试方法
  3. python类装饰器详解-Python类中的装饰器在当前类中的声明与调用详解
  4. python迭代器生成器使用技巧(1):遍历、代理、生成器创建迭代、反向迭代
  5. 决策树ID3 C4.5 CART代码
  6. 2019年末逆向复习系列之Boss直聘Cookie加密字段__zp_stoken__逆向分析
  7. Jzzhu and Chocolate(CF-449A)
  8. Java+jquery+jsonp实现跨域
  9. 应用安全-Web安全-越权漏洞整理
  10. 直线型一阶倒立摆1---概念篇
  11. Linux的百度云有限速吗,mac(linux)下配置aria2解决百度云限速问题
  12. c 语言鼠标钩子,线程钩子(鼠标钩子) | C/C++程序员之家
  13. 用LaTeX写毕业论文-UESTC
  14. 基于Java GUI的资产管理系统的设计与实现
  15. vs禁用函数安全检查
  16. 谷歌退出中国谁对谁错
  17. 小程序源码:AI微信小程序源码下载人脸照片AI转换动漫照片全新源码安装简单无需服务器域名-多玩法安装简单
  18. 项目中统一日志文件配置
  19. 使用matlab绘制弧线,MATLAB求解叶型中弧线
  20. 死磕 java线程系列之线程池深入解析——未来任务执行流程

热门文章

  1. springSessionDemo
  2. 移位密码算法-c语言,凯瑟移位密码(C语言).doc
  3. 一、二线城市 IT 公司大盘点!建议收藏
  4. 思科模拟器5506防火墙配置_租用电信线路,三地网络互联的配置——Cisco、Hillstone路由配置...
  5. 四阶段法——城市交通需求预测
  6. 高德地图全解析--定位篇
  7. 12个优秀的开源UML工具
  8. html通过拼音首字母定位,javascript实现通过拼音首字母快速选择下拉列表
  9. 美化复选框html,使用CSS3美化复选框checkbox
  10. 比特率和波特率的公式解析