2009-05-29 54 views
3

我有一個C#應用程序,它將字串轉換成文本文件,大部分這個工作正常。如何以編程方式判斷單詞文檔是否損壞?

但是,如果文檔被破壞,那麼Word將無法打開該文件並彈出一個對話框,這意味着我無法完全自動執行此轉換過程 - 有人必須注意對話框。

有沒有辦法測試一個單詞.doc是否中斷,而不打開它?也許通過word interop或者可能通過第三方工具。

一個想法我已經是生成一個線程執行轉換並殺死它,如果這個過程是開放的時間超過n秒,但我想知道如果有一個更簡單的方法?

回答

3

確定是否Word會認爲該文件已損壞的唯一確定方法是讓Word打開它:-)。我不認爲任何第三方應用程序將在這方面100%可靠的 - 畢竟,該文件實際上可能已損壞,但它不能幫助你如果Word認爲它。但是,很明顯,您可以檢測到某些情況,例如文件大小爲零或類似的情況。

我沒有碰到過很多(任意?)腐敗的文件,所以我不知道你所看到的腐敗現象可能會跟隨,你可以發現一個模式?例如,這些文件是從哪裏下載的,通常會丟失文件的後半部分?

在任何情況下,損壞的文件是不是詞可能會彈出一個對話框,唯一的原因。其他原因還包括:

  • 該文件是密碼保護
  • 文件包含鏈接到其他文件
  • 文件包含宏(其本身可彈出對話框,或可能導致安全警告對話框出現)

可以規避一些使用Application.DisplayAlerts的等,但並不是所有的(特別是安全警告)。

我已經取得了一些成功使用檢測由辦公室和(對於那些能夠識別)按下適當的按鈕擁有一個對話框第二線程。這不算優雅,但確實有效。是的,如果執行某些操作所需的時間太長,我的第二個線程也會終止應用程序。

0

根據應用程序的性質,如果它是沒有UI交互的服務器端應用程序,則使用Office自動化可能會有問題。 (見鏈接在此:http://support.microsoft.com/kb/257757

如果是辦公室2007+,最好的辦法是使用OpenXML的。如果它是較舊的文件,則可以使用一些第三方工具,例如aspose API

相關問題