java 桥 word_java导出word的6种方式(转发)

最近做的项目,需要将一些信息导出到word中。在网上找了好多解决方案,现在将这几天的总结分享一下。

目前来看,java导出word大致有6种解决方案:

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模板的内容,启动拼音部分为要在代码种替换的部分。

39349aec0be67c6e6e355534ae6f177b.png

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

主要代码:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jieba 词典 词频_在Hanlp词典和jieba词典中手动添加未登录词

在使用Hanlp词典或者jieba词典进行分词的时候,会出现分词不准的情况,原因是内置词典中并没有收录当前这个词,也就是我们所说的未登录词,只要把这个词加入到内置词典中就可以解决类似问题,如何操作呢,下面我…

python爬取汽车之家_python爬取 汽车之家(汽车授权经销商)

一:爬虫的目标:打开汽车之家的链接:https://www.autohome.com.cn/beijing/,出现如下页面我们的目标是点击找车,然后出现如下图我们要把图中的信息抓取到二:实现过程我们选择 宝马5系 然后点击找车注意宝马…

Java 调用 Caffe_解决 free(): invalid pointer: 0x00000000019ff700 运行时报错(caffe)(libtool使用)...

编译成功,运行时报错:在使用 pytorch or tensorflow or caffe 时,都可能存在这个问题:*** Error in xxx: free(): invalid pointer: 0x00000000020663b0 ***很可能是缺少libtcmalloc库解决方法1:apt-get安装libtcmallo…

unity 世界坐标间角度_Unity学习笔记—本地坐标转世界坐标

核心用到的方法就是transform.TransformPoint( )这个方法的返回值就是Vector3类型的世界坐标,transform就是相对的物体,括号里的就是相对这个transform的本地坐标,比方说我现在的位置吧,知道我相对于我的邻居的坐标:Pos1&#xff…

webcomponents安装了没有用_Web Components 入门实例教程

来源 | http://www.ruanyifeng.com/blog/2019/08/web_components.html组件是前端的发展方向,现在流行的React和Vue都是组件框架。谷歌公司由于掌握了Chrome浏览器,一直在推动浏览器的原生组件,即Web组件API。部分第三方框架,原生组…

虹软java接摄像头_虹软人脸识别SDK(java+linux/window) 初试

虹软人脸识别全平台demo调用—快速上手之服务端Windows篇demo名称:ArcFace 2.2 Windows(86) Demo [C]一 环境配置:1) 安装VS2013环境安装包(vcredist_x86_vs2013.exe)2) 从官网(http://www.arcsoft.com.cn/ai/arcface.html)申请sdk,下载对应的…

java 循环查询list_Java用list储存,遍历,查询指定信息过程详解

需求说明实现思路见代码注释代码内容使用list储存,遍历,查询,删除import java.util.ArrayList;import java.util.List;/*** auther::9527* Description: 第七题* program: 多线程* create: 2019-08-09 23:39*/public class Sevent…

低代码开发平台_低代码开发平台系列:6、低代码是编程技术发展大势所趋

一、低代码是一种编程技术低代码是快速开发工具/技术的一种,属于软件开发/编程工具/技术领域,主要应用于企业软件开发领域。借助低代码工具,使用者无需编码即可实现企业软件系统常见功能的交付;少量编码扩展更多功能,相…

abnf java实现_详细讲解如何利用Java实现组合式解析器?

简介:Ward Cunningham 曾经说过,干净的代码清晰地表达了代码编写者所 想要表达的东西,而优美的代码则更进一步,优美的代码看起来就像是专门为了 要解决的问题而存在的。在本文中,我们将展示一个组合式解析器的设计、实…

充电原理_电动汽车充电桩如何设置?充电桩原理介绍

随着新能源产业的蓬勃发展,电动汽车在生活中变得越来越普遍。比亚迪(BYD),宝马(BMW)和特斯拉(Tesla)等汽车制造商都已经推出了全电动汽车,而混合动力汽车则更为普遍。为了能够方便地为这些电动汽车的电池充电,必须建立充电桩。充电…

java 获取服务器硬件_dell服务器远程获取硬件状态

以dell的R620型号的服务器做的测试登陆上dell服务器ilo的IP地址,首先打开ipmi,ilo2是直接支持ipmi2.0的此框需要点击 “IDRAC设置”->“网络”->“IPMI设置”在”启用LAN上IPMI“后的复选框打钩,才能启动ipmi好像是内置到了ilo2&#x…

简单可行性报告模板_项目可行性报告模板分享!第三章主要内容

项目可行性报告模板分享!第三章主要内容如下:第三章 市场分析与建设规模市场分析在可行性研究中的重要地位在于,任何一个项目,其生产规模的确定、技术的选择、投资估算甚至厂址的选择,都必须在市场需求情况有了充分的了解后才能解…

java外挂源码_2.7 万 Star!Github 项目源码辅助阅读神器

【导语】:一款用于将 Github 项目代码以树形格式展示的浏览器插件。简介大家平时逛 GitHub 是否会觉得查看源代码的体验十分糟糕?项目文件需要一层层点击,返回也要一层层返回。这样不直观,也比较麻烦。Octotree 是一款辅助阅读 Gi…

php教育网站设计案例_酒店装修,精品酒店设计装修案例,酒店设计网站

酒店设计需要考虑:设计酒店的时候也要顺应市场潮流,不再单一的提供休息、洗漱、睡觉的空间,还要能提供社交、商务等功能,同顾客产生情况共鸣。这样能够引领生活方式的、能够互动,有仪式感的酒店,是很吸引人…

写一个方法判断一个字符串是否对称_判断一个男生是否好色的方法

▾我们店只招黑喵哦?▾其实也不是不能理解为什么男的要跑?▾有什么相见恨晚的小知识??▾见证奇迹?:是不是穿过去了!?▾医学奇迹?▾卧槽流劈!?真的超光速了!▾细节很到位啊几位少年?▾昨有坟头蹦迪?…

matlab计算联合熵,如何用matlab软件计算一幅图像信息的熵以及两幅图像间的联合熵?...

%计算一副图像的熵%随机生成图像Afloor(rand(8,8).*255);[M,N]size(A);tempzeros(1,256);%对图像的灰度值在[0,255]上做统计for m1:M;for n1:N;if A(m,n)0;i1;elseiA(m,n);endtemp(i)temp(i)1;endendtemptemp./(M*N);%由熵的定义做计算result0;for i1:length(temp)if temp(i)0;…

自然水体辐射特性与数值模拟 pdf_OpenGMS系列讲座(十三)汪亚平教授:南黄海水动力过程和辐射沙脊群演化...

2020年8月28日,南京大学海岸与海岛开发教育部重点实验室汪亚平教授应地科院陈旻教授邀请,作客南京师范大学虚拟地理环境教育部重点实验室OpenGMS系列讲座,并做了题为"南黄海水动力过程和辐射沙脊群演化" 的报告。汪教授首先通过两个…

matlab2014a 3d标定,[转载]张的matlab摄像机标定

自己写了下matlab张的标定程序,采用张正有网站上的数据,即数据文档Model.txt data1.txt data2.txtdata3.txt data4.txt data5.txt。其中Model.txt为世界坐标系中的点【实验结果】我的程序:k1 -0.2286 k2 0.1903 fx 832.5000fy 832.5298 cx 30…

小括号教学设计导入_【教资面试】语文政治历史地理教学设计答题技巧!

语文1.确立教学目标的依据 (1)基础教育课程改革课程改革要求语文课程必须面向全体学生,使学生获得基本的语文素养。对知识与技能,过程与方法,情感态度与价值观三个方面目标的整合,是语文新课程的价值追求。 根据语文学科工具性与人…

360浏览器卸载_陈蛋蛋碎碎念—如何完美地卸载流氓软件

陈蛋蛋碎碎念—如何完美地卸载流氓软件很多小伙伴都会有困扰,明明我就是只下载了一个软件啊,怎么电脑上莫名其妙地多了一大堆软件,什么我是渣渣辉一刀就是99级的游戏,什么影视全家桶,又或者是各种各样的浏览器&#xf…