除了收費的軟體或者庫以外,如何解析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# |