除了收費的軟體或者庫以外,如何解析doc格式word文件,C++或C#語言的?

已經通過OpenXml實現了docx格式的解析,獲得了文檔的文字,公式,圖片等內容,並得各個內容的相對位置,請問如何通對doc文件格式實現上述要求?收費的軟體或庫不算,最好C++或者C#語言(除NPOI和LibreOffice)。


另存為docx,把docx擴展名改成zip,解壓出來會看到一大堆xml,然後看文檔自己弄 Office File Formats

只要你在你的伺服器上安裝了Word,你就可以在伺服器上編程調用COM組件去做另存為(逃


我來出個投機的辦法:

Word 自身支持一種叫 WordML 的格式,也就是在 Word 另存為對話框可以看見的 Word 2003 XML 格式。

題主只需要將源文檔另存為該格式,然後把擴展名從 XML 改為 DOC 就可以了。該 XML 格式不僅 Word 2003及更高版本可以直接支持,而且非常便於解析修改。

另外插播個廣告,如果題主需要的是生成 Word 和 Excel 的文檔的話,我的開源庫是更簡單直觀的辦法(而且支持 ODF/ODS):

http://www.cnblogs.com/oldrev/p/maltreport2_intro.html

&>&>&>&>&>&>&>&>&>&>&>&>&>&>&>&> 更新:

我問了做 Java 的朋友,POI 庫是可以讀寫 doc 的,那麼有個思路是用 http://IKVM.NET 把 POI 的 JAR 轉換成 CLR 的 DLL 然後 C# 就可以用了。


OpenXML,目前事實上的文檔標準,.docx、.xlsx、.pptx實際上都是由大量XML定義的Zip文件,所以理論上解析XML就可以了(逃


這玩意兒以前做過,OpenOffice網站上上可以找到office2003的文件格式的說明

The Microsoft Compound Document File Format https://www.openoffice.org/sc/compdocfileformat.pdf

照著碼代碼就行了。

二進位的,各種標誌位就是寫起來比較啰嗦而已,沒啥別的問題。順帶還能學學MSAT,SAT,SSAT之類看起來沒啥卵用的東西。

另外需要判斷一下.doc後綴名也有可能是2003的xml兼容模式,這玩意和docx挺像的但是內容不太一樣,賊坑。

有時間的話不如研究研究v:shape裡面的那堆自建圖形該咋解析。

PS:看問題描述感覺像是老東家或者是競品,嘻嘻。


百度.net開源框架 docX 不謝


提供一個比較猥瑣的solution。

首先你需要一個Java,Apache有個輪子叫poi,那麼就通過C#調用clr,轉入C++,然後CreateJavaVM,在Java端寫好讀取的代碼,一層層讀回來就行。網上這方面的doc很多,晚上放幾個傳送門。

性能問題:如果預先啟動好jvm那麼速度還是可以忍受的。


c#有一個NPOI庫,免費的。你可以試試。


aspose.word不錯哦

之前用Microsoft.Office.Interop.Word各種問題實在受不了去百度搜到的

完全不依賴office組件

獨立操作word,只要引入一個aspose.word.dll,c#語言

其他語言應該也有對應dll


POI不能用?除了這個好像沒什麼公開庫了。


[MS-DOC]: Word (.doc) Binary File Format


有個C寫的wvware庫,不過好像兼容性不好。網上搜索的話,應該有很多實現的。

另外,不知道題主到底想做什麼。微軟官方有個在線預覽的網頁,調用的話,應該可以把doc轉成html。


office文件格式2003版的存儲的是二進位的數據,你需要用streamreader順序讀取每一個位元組並按照微軟公開的標準文檔進行對比解析,其過程是很繁瑣的

如果你能忍得住每一個生成的文件里都包含有版權信息,那麼你可以試試成都一家名叫冰藍科技有限公司的產品Spire.Office系列,裡面包含了對Office三件套以及pdf文件的處理組件,採用.NET平台技術開發,即你可以用c#語言來使用它的功能,當然,這套產品本身是收費的,免費使用是被允許的,但你就只有忍受版權信息了,

公司網址https://www.e-iceblue.com

利益相關:本人曾在冰藍承擔excel文件處理模塊的相關開發工作


有輪子就不要自己去填坑了。

有收費的就不要使用免費的。


推薦閱讀:

使用 C# 開發 iOS 程序是一種怎樣的體驗?
值得看的C#的開源項目有哪些?
如何看待CE5繼Unity之後又一個支持C#?
使用unity引擎時有哪些禁忌?
如何用C#對論壇進行爬蟲?

TAG:MicrosoftOffice | MicrosoftWord | C | C# |