在网上找了好多天将数据库中信息导出到word中的解决方案,现在将这几天的总结分享一下。总的来说,java导出word大致有5种解决方案:
1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。通过Jacob实现了在Java平台上对微软Office的COM接口进行调用。
优点:调用微软Office的COM接口,生成的word文件格式规范。
缺点:服务器只能是windows平台,不支持unix和linux,且服务器上必须安装微软Office。
2:Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件。
优点:跨平台支持windows、unix和linux。
缺点:相对与对word文件的处理来说,POI更适合excel处理,对于word实现一些简单文件的操作凑合,不能设置样式且生成的word文件格式不够规范。
3:Java2word是一个在java程序中调用 MS Office Word 文档的组件(类库)。该组件提供了一组简单的接口,以便java程序调用他的服务操作Word 文档。 这些服务包括: 打开文档、新建文档、查找文字、替换文字,插入文字、插入图片、插入表格,在书签处插入文字、插入图片、插入表格等。
优点:足够简单,操作起来要比FreeMarker简单的多。
缺点:没有FreeMarker强大,不能够根据模版生成Word文档,word的文档的样式等信息都不能够很好的操作。
4:FreeMarker生成word文档的功能是由XML+FreeMarker来实现的。先把word文件另存为xml,在xml文件中插入特殊的字符串占位符,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板,编码调用FreeMarker实现文本替换并输出Doc。
优点:比Java2word功能强大,也是纯Java编程。
缺点:生成的文件本质上是xml,不是真正的word文件格式,有很多常用的word格式无法处理或表现怪异,比如:超链、换行、乱码、部分生成的文件打不开等。
5:PageOffice生成word文件。PageOffice封装了微软Office繁琐的vba接口,提供了简洁易用的Java编程对象,支持生成word文件,同时实现了在线编辑word文档和读取word文档内容。
优点:跨平台支持windows、unix和linux,生成word文件格式标准,支持文本、图片、表格、字体、段落、颜色、超链、页眉等各种格式的操作,支持多word合并,无需处理并发,不耗费服务器资源,运行稳定。
缺点:必须在客户端生成文件(可以不显示界面),不支持纯服务器端生成文件。
综合以上资料的参考,和网上的一些意见,最后选择了,第5种用PageOffice做导出方案。
下面是基本的例子,以实现简单的word导出:
读取数据库表中的信息记录填充到一个请假条的模板中,替换“部门、姓名、原因、天数、日期”几个数据位置的文本内容。
主要代码:
// 声明变量存储从数据库中读取的数据 String docName = "", docDept = "", docCause = "", docNum = "", docDate = ""; // 数据库数据读取操作(不同的数据库用不同的代码) ResultSet rs = stmt.executeQuery("select * from leaveRecord where ID = " + id); if (rs.next()) { docName = rs.getString("Name"); docDept = rs.getString("Dept"); docCause = rs.getString("Cause"); docNum = rs.getString("Num"); docDate = rs.getString("SubmitTime"); } rs.close(); //创建PageOffice的WordDocument对象,操作Word文件 WordDocument doc = new WordDocument(); doc.openDataRegion("PO_name").setValue(docName); doc.openDataRegion("PO_dept").setValue(docDept); doc.openDataRegion("PO_cause").setValue(docCause); doc.openDataRegion("PO_num").setValue(docNum); doc.openDataRegion("PO_date").setValue(docDate); //创建PageOfficeCtrl对象打开文件 PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request); poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须 //获取数据对象 poCtrl1.setWriter(doc); // 打开文档 poCtrl1.webOpen("doc/template.doc", OpenModeType.docReadOnly, "Tom");
生成的文件效果:
相关推荐
导出Word方式多种多样,通常有以下几种方式: 1. 使用第三方Java工具类库Hutool的Word工具类,参考网址为https://www.hutool.cn/docs/#/poi/Word生成-Word07Writer; 2. 利用Apache POI和FreeMarker模板引擎; 3. ...
完整的JAVA导出WORD源代码,解压即可运行
java导出文件, freemarker导出word需要ftl文件,java导出Word常见问题。2.TXT修改后缀名为.ftl
java freemarker导出word -包含多张图片导出
Java 导出 Word。 可直接运行,有说明文档,有注释,有jar文件。
最近因项目开发的需要,整理了一份用JAVA导出WORD文档,其部署步骤如下: 1、将jacob-1.14.3-x86.dll放在服务器的系统盘(或运行本机的系统):\WINDOWS\system32目录下。 2、将jacob-1.14.3-x86.dll放在JDK 的 bin ...
java导出word使用freemarker模板map数据导出word带图片 可以循环map 中list。 调用的2种方法在博客 https://blog.csdn.net/yjflinchong/article/details/122614203
WORD导出,并插入图片
java导出到word,进行写操作,如表格、生成图片等.
实现java中导出一定模板格式的word文档,支持word2003.
java:多个图片导出到word文档里显示,用于打印图片导出
java word导出java word导出java word导出java word导出java word导出
java生成word的实例 java导出Word文档的实例 项目说明
java导出word的插件 先制订好word模板 再导出就可以了
小demo,直接运行Test.java就行了 导出文件在D盘
利用java导出word,应用freemarker框架
利用java进行Word导出的功能,包括了导出的jar包和使用说明,我在压缩包里面都已经打包了,都是最新的包,喜欢的可以下下来试试导出,可以的话,给个好评,谢谢。
用java导出word 中的文字,段落,图片,饼形图(函3D饼形图),柱状图,散点图,折线图等一些经常用到的功能,将一些功能进行了整合代码文件将上传到页面中,需要的朋友可以下载看看,欢迎随时提问
java使用word模板导出个人简历 a、处理word2003模板导出doc文件 b、处理word2007模板导出docx文件
用java实现word统计报表和图形统计的导出