2016-09-14 44 views
1

已經閱讀了這個的幾個變種,但沒有確切地解決我的問題。我可以在C#中修改一個Word '97文檔嗎?

我是數據遷移團隊的一員,我們的一項任務是將現有文檔從一個環境遷移到另一個環境,一旦遷移,維護現有的超鏈接。

對於相對較新的文檔(Office 2007+),這是沒有問題的。我曾看過Cathal Coffey的DocX; NPOI顯然不穩定,不推薦使用 - 或者至少是我需要的部分; GemBox等等,儘管它們適用於較新的文檔,但它們都不能處理打開/修改Word 97中的文檔。幸運的是,在Win 3.1或Word for Windows 2下創建的文檔超出了範圍。

我意識到這些文件已經很舊了,不再支持,因此可能會帶來安全隱患,我也意識到它們應該由各自的團隊維護和更新,但無論出於何種原因,沒有,現在我的工作是試圖想出辦法做到這一點。

使用COM對象的最舊版本我有可用(Microsoft Office 14.0 Object Library,版本8.5.0.0)我遇到了對信任設置,註冊表更改等進行更改的問題。執行所有這些操作會導致它自己問題,比如必須在保護模式下打開文檔時,我需要對其進行更改,此外,如果部署此文檔,我將無法訪問信任中心或註冊表。檢查內存中的文檔顯示超鏈接集合,但不會讓我看到詳細信息,例如我可以在DocX中看到。

有沒有辦法做到這一點,或者我回過頭來說這些文檔太舊,沒有支持,相關團隊需要更好地維護文檔?考慮嘗試以HTML格式閱讀文檔,然後檢查任何href標籤,想法?我可以在舊版Microsft DLL上獲得我的手,即使我可以,它們是否會與VS 2015兼容?第三方庫是一個選項(Gem,DocX等),但像Aspose Documents這樣的東西是不可能的,因爲許可證是1000美元。

很高興有一些東西可以在不需要安裝Office的情況下工作,真的是夢想中的東西。

謝謝大家。

+0

正在將二進制格式(.doc)轉換爲Open XML(.docx)的一個選項嗎?然後看看這裏:http://stackoverflow.com/a/2405508/40347 –

+0

@DirkVollmar在這一點上,任何事情都是一種選擇。將調查,謝謝你的回覆。 –

回答

0

最簡單和最快的方法是將文檔轉換爲Open XML格式。這可以在命令行上輕鬆完成(與在WINWORD.EXE被安裝在計算機上的路徑替換路徑):

"C:\Program Files\Microsoft Office\Office15\wordconv.exe" -oice -nme <input file> <output file> 

其中,需要完全合格的路徑名。

該命令可以很容易地應用到使用多個文件:

for %F in (*.doc) do "C:\Program Files\Microsoft Office\Office12\wordconv.exe" -oice -nme "%F" "%Fx" 

一旦文件被轉換,您可以通過編輯壓縮包內的原始XML或使用微軟的Open XML SDK修改的文件。

+0

將它包裝在一個新的C#過程中,工作完美。謝謝。 –

相關問題