前言:
眼前你们对“excel加载wind插件”可能比较珍视,姐妹们都想要剖析一些“excel加载wind插件”的相关内容。那么小编在网摘上网罗了一些对于“excel加载wind插件””的相关内容,希望咱们能喜欢,同学们快快来学习一下吧!昨天,写了一篇复杂word模板导出的设置,好多粉丝都私信问我如何实现在线预览的功能~~
那么我们今天就重点来讲讲office文档(word、excel、ppt、pdf)如何通过java在windows以及linux服务器环境下实现在线预览的效果~~
一:windows篇
如果你的服务器部署在windows下面,要想实现office文档的在线预览功能,就比较的简单了,目前主流的工作有JNA调用方式、openoffice服务调用转换方式等等。
但是,个人并不推荐使用openoffice,因为他在转换时,会出现文件变形、字符乱码、XML格式转换无效、大文件转换超时失败等等一系列让你很尴尬的问题!
那么,既然是在windows服务器,我觉得最简单实用的方式就是JNA调用方式。
目前,应用比较普及的是jcom、jacob插件,jcom仅仅支持32位jdk,所以还是选择jacob比较方便,相关的jacob.dll去网上下载即可,百度一下,一大把~~~~
jacob(即:JAva COm Bridge)配置,首先需要将下载的jacob.dll文件拷贝到C:/WINDOWS/system32目录下,并将jacob.jar添加到CLASSPATH中。
那么此时,所有的office都可以调用其“另存为”的功能,可以另存为PDF、HTML、JPG等等许许多多的格式,进而可以加载转换后的路径,实现在线预览。
那么,我们就重点一步一步来讲一下,如何通过JACOB调用com组件的另存为的功能~~~
1:ComThread.InitSTA(); com组件线程的初始化
2:ActiveXComponent app = null;
app = new ActiveXComponent("Powerpoint.Application"); ---PPT
app = new ActiveXComponent("Word.Application"); ---WORD
app = new ActiveXComponent("Excel.Application"); ---Excel
启动 ppt、word、excel的com组件
扩展一下:JACOB获取com组件的类型包括
3:组件的属性设置
app.setProperty("Visible", false); ----不可见,另存转换时,设置文档不可见
此处一直没有找到一个最全的属性设置的方法名的API手册,大家有的话希望能给我分享一下。
4:获取文档控制权
Dispatch docs= app.getProperty("Documents").toDispatch();
Workbooks---Excel
Presentations ---PPT
Documents---WORD
5:把目标文档的内容,赋给当前新建的文档
Dispatch doc = Dispatch.call(docs,"Open",sourceUrl,false,true ).toDispatch();
docs----新起的com文档 ;Open-----打开文档
sourceUrl----目标文档路径;false---是否确认转换;true----是否只读
6:调用“另存为”方法,比如另存为HTML
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {htmlfileUrl, new Variant(10) }, new int[1]);
htmlfileUrl-----为word另存为HTML的路径地址
“10”-----这个参数就是代表的是,另存为HTML格式。
7:关闭当前文档并退出!!!!!!!
Variant f = new Variant(false);
Dispatch.call(doc, "Close", f);
app.invoke("Quit", new Variant[] {});
其实,说这么多,也就是调用了一个另存为的功能。其实JACOB还有许许多多的功能,比如对于文档内容、域、书签等等操作还需要对JACOB以及相关com组件自己的API方法加深查看~~
下面就贴一些为了实现《另存为》转换的三种office文档的代码吧~~
最后,可以通过调用相关的html的地址、pdf的地址、图片文件夹的地址(PPT转成图片文件夹时,都按照PPT的顺序排好了顺序),就可以实现在线预览了~~~这种方式word不会变形、xls不管有多少sheet页也不会变形、ppt顺序不会混乱~~~
那么下一篇,我们就重点说一下在LINUX环境下,如何实现这些功能!因为LINUX无法调用JNA组件!!!!
标签: #excel加载wind插件