2011-04-28 42 views
6

我需要以編程方式計算已應用DOCX文檔中特定已知樣式的字符和/或單詞和/或段落。用DOCX文檔中的特定樣式以編程方式計算字符數/字/段落數

我需要知道1)如果這是可能的,並2)任何提示,我可以開始解決這個問題。

我熟悉DOM導航,XPath/XQuery,只要我能解決這個問題,就可以使用.Net,PHP或Java或其他工具。

+1

我認爲用一些OLE自動化(用C#或VB.NET編寫)很容易就可以完成,我真的認爲這只是閱讀文檔並通過試驗和錯誤進行的問題(它總是這樣與MS OLE自動化)。我不建議你自己解析DOCX文檔,即使它是XML,它也是一種非常複雜的文檔格式,你可以輕鬆地編寫一些非強健的代碼 – gd1 2011-04-28 20:23:09

+0

好的建議,我會調查該選項!請添加您的評論作爲答案,所以我可以相信你,如果這個工程:) – andrerav 2011-04-28 20:25:47

+1

這是一個一次性腳本或將進入支持的生產應用程序?如果是後者,我會推薦至少使用官方的OOXML SDK(不幸的是,我只用過.xlsx而不是.docx,所以我不能說這個特定任務可能是多麼容易,但工作起來使用.xlsx在一些初始頭部劃傷之後並沒有那麼糟糕),因爲Office依賴可能是一個難以管理的問題。 SDK不像OLE自動化那樣直截了當,因爲它是一個相對較薄的XML包裝器,但它仍然比直接使用DOM更好。 – 2011-04-29 01:36:46

回答

2
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); 
     Microsoft.Office.Interop.Word.Document doc = new Microsoft.Office.Interop.Word.Document(); 

     try 
     { 
      object fileName = @"C:\TT\change.docx"; 
      doc = word.Documents.Open(ref fileName, 
       ref missing, ref missing, ref missing, ref missing, 
       ref missing, ref missing, ref missing, ref missing, 
       ref missing, ref missing, ref missing, ref missing, 
       ref missing, ref missing, ref missing); 

      doc.Activate(); 

      int count = doc.Characters.Count ; 
      int words = doc.Words.Count; ; 
      int paragraphs = doc.Paragraphs.Count; 

      doc.Save(); 

      doc.Close(ref missing, ref missing, ref missing); 
      word.Application.Quit(ref missing, ref missing, ref missing); 
     } 
     catch (Exception ex) 
     { 
      doc.Close(ref missing, ref missing, ref missing); 
      word.Application.Quit(ref missing, ref missing, ref missing); 
     } 
相關問題