国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

java調(diào)用vbs將word、excel文檔轉(zhuǎn)換成pdf

2019-11-14 12:59:17
字體:
供稿:網(wǎng)友

java操作Word挺不方便的,工具是有很多,但是不管如何純java的方法效果總是不盡人意。例如doc格式轉(zhuǎn)pdf這個(gè)需求我試了很多辦法都不成功,最后只好另辟蹊徑用外部腳本調(diào)用com組件的方式去做。畢竟對(duì)word操作能力最強(qiáng)大的還是office本身。 這種方法的限制在于,只能在windows服務(wù)器上運(yùn)行,服務(wù)器還必須安裝了合適版本的office。

實(shí)現(xiàn)

vbs是微軟自家的東西,調(diào)用起com很簡(jiǎn)單,直接上代碼:

path = createobject("Scrapplication")Set docx = word.Documents.Open(path & "/" & "tmp.doc")docx.SaveAs path & "/" & "tmp.pdf",17docx.close(doNotSaveChanges)word.Quitset docx = nothingSet word = nothing

保存為word2pdf.vbs文件就可在windows上直接運(yùn)行,作用是將同目錄下的tmp.doc另存為tmp.pdf

java中調(diào)用外部程序(這里是調(diào)用cmd.exe執(zhí)行vbs):

package com.poi.test;import java.io.IOException;public class VbsTest { public static void main(String[] args) { String vbsFileName = "D:////word2pdf////word2pdf.vbs"; final String cpCmd = "cmd /c start " + vbsFileName; Thread t = new Thread() { @Override public void run() { try { PRocess process = Runtime.getRuntime().exec(cpCmd); try { int val = process.waitFor(); System.out.println("val = "+val); } catch (InterruptedException e) { e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } } }; t.start(); try { t.join(5000); } catch (InterruptedException e) { e.printStackTrace(); } }}

注意事項(xiàng)

需要注意幾點(diǎn): 1.office2010版本親測(cè)可行,其他版本未知; 2.格式轉(zhuǎn)換需要時(shí)間,如果需要馬上讀pdf文件則要設(shè)置等待; 3.在tomcat以服務(wù)方式啟動(dòng)時(shí),web后臺(tái)java的Runtime.exec()方法失效,需要以命令行方式啟動(dòng)tomcat。 4.vbs腳本一旦運(yùn)行失敗中途退出,很可能導(dǎo)致WORD.EXE進(jìn)程殘留,下次運(yùn)行需要先殺掉這個(gè)進(jìn)程

擴(kuò)展

用vbs還可以調(diào)用office文檔中的vba函數(shù)(宏),可以實(shí)現(xiàn)各種強(qiáng)大的功能 例如下面這個(gè)腳本就是調(diào)用宏實(shí)現(xiàn)Excel轉(zhuǎn)pdf:

path = createobject("Scripting.FileSystemObject").GetFile(Wscript.ScriptFullName).ParentFolder.Pathset fs = CreateObject("Scripting.FileSystemObject")dim oExcel,oWb,oSheetSet oExcel= CreateObject("Excel.Application") Set oWb = oExcel.Workbooks.Open(path & "/" & "tmp.xls")Set oSheet = oWb.Sheets(1) oExcel.Run "saveaspdf"oExcel.Quit

宏saveaspdf是在tmp.xls里事先錄制好的,保存在Sheet1里。通過錄制宏–java調(diào)用vbs–vbs調(diào)用宏,可以完成對(duì)office文檔的大部分操作。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 临汾市| 渭源县| 建宁县| 永城市| 措勤县| 都昌县| 斗六市| 黑水县| 西和县| 兰州市| 灵台县| 信丰县| 根河市| 托里县| 砀山县| 吉安县| 濮阳市| 阳新县| 黄冈市| 繁昌县| 邢台县| 琼结县| 翁源县| 新余市| 德保县| 论坛| 马山县| 阿尔山市| 兴文县| 湘西| 临西县| 青河县| 温宿县| 稷山县| 嘉义县| 安吉县| 紫阳县| 苏州市| 丹棱县| 大关县| 磐石市|