java程序獲取word,excel打印頁數的比較精確的方法

項目中,開發人員使用java開發上傳文件功能,用戶的文件類型就那麼固定幾種,word,excel,pdf。須要上傳完以後,在上傳列表上,顯示此文件的具體頁數,也就是打印預覽的時候,能夠看到的打印頁數,由於這個上傳的文件會走審批流程,最終經過打印程序,直接刷卡打印出來。其餘的都不是問題,就是頁數讀不許確。poi,不用提了,word只能讀摘要,而word的摘要根本不許, openoffice,能夠,可是不夠精確,由於openoffice是使用本身打開word,或者excel而後得到的是本身的頁數,會與微軟的office的樣式有細微的差別,大多數狀況下,差別不明顯,可是畢竟是可能不許確。由於咱們的服務必定是部署在windows機器上的,因此仍是用微軟本身的方式最正確,嘗試jacom,其餘都沒問題,可是讀excel頁數的時候,循環sheet頁把我難住了,楞是沒弄明白使用jacom如何循環。最後沒招,仍是使用了vbs腳本,代碼又簡單,又幹淨。java直接調用vbs獲取結果就能夠了。 下面把vbs基本分享給你們,有的朋友可能會說,網上一搜處處都是,此言差矣,網上還真沒有幾個那麼完整和準備的方法。若是網上一搜就能夠搜到的內容,我通常不會再寫出來的了。 最起碼word,excel讀準確頁數的方法於我這同樣的仍是滿少的,excel都差很少,直接調用宏,word的方法用的人就不多了,word的方法有不少,大可能是讀Selection的Information,這種方法,大可能是準確的,可是會有極少數不許確的狀況出現。好了,仍是直接看代碼吧:java

  
  
  
  
  1. Private Sub getWordPages()  
  2.     Dim pages  
  3.     Set oWord= CreateObject("Word.Application")   
  4.     Set oWd = oWord.Documents.Open(wscript.arguments(0))   
  5.     pages = oWd.ComputeStatistics(2)  
  6.     oWd.close  
  7.     oWord.quit   
  8.     Set oWd = Nothing 
  9.     Set oWord = Nothing 
  10.     WScript.Echo pages  
  11. End Sub 
  12.  
  13. Private Sub getExcelPages()  
  14.     Dim Pages  
  15.     Set oExcel= CreateObject("Excel.Application")   
  16.     Set oWb = oExcel.Workbooks.Open(wscript.arguments(0))   
  17.     For Each sht In oWb.Worksheets  
  18.         sht.Activate()  
  19.         Pages = Pages + oExcel.ExecuteExcel4Macro("GET.DOCUMENT(50)")  
  20.     Next   
  21.     oWb.close  
  22.     oExcel.quit   
  23.     Set oWb = Nothing 
  24.     Set oExcel = Nothing 
  25.     WScript.Echo Pages  
  26. End Sub
相關文章
相關標籤/搜索