我有一個Web應用程序,它需要一些客戶端信息併爲每個客戶端生成一封信。在我的測試環境中,一切正常,但在生產服務器上出現錯誤,說文件已損壞。我可以在服務器上打開.dotx文件,但無法通過代碼打開。請幫忙。這裏是我的代碼:Com例外:Word無法閱讀此文檔。它可能會損壞
Object oMissing = System.Reflection.Missing.Value;
Object oTrue = true;
Object oFalse = false;
Word.Application oWord = new Word.Application();
Word.Document oWordDoc = new Word.Document();
oWord.Visible = false;
Object oTemplatePath = Request.PhysicalApplicationPath + "letters\\" + letter.letter_data; //samplehollisletter.dotx";
oWordDoc = oWord.Documents.Add(ref oTemplatePath, ref oMissing, ref oMissing, ref oMissing);
foreach (Word.Field myMergeField in oWordDoc.Fields)
{
iTotalFields++;
Word.Range rngFieldCode = myMergeField.Code;
String fieldText = rngFieldCode.Text;
if (fieldText.StartsWith(" MERGEFIELD"))
{
Int32 endMerge = fieldText.IndexOf("\\");
Int32 fieldNameLength = fieldText.Length - endMerge;
String fieldName = fieldText.Substring(11, endMerge - 11);
fieldName = fieldName.Trim();
if (fieldName == "letter_title")
{
myMergeField.Select();
oWord.Selection.TypeText(acct.letter_title);
}
if (fieldName == "account_id")
{
myMergeField.Select();
oWord.Selection.TypeText(acct.account_id);
}
if (fieldName == "address")
{
myMergeField.Select();
oWord.Selection.TypeText(acct.PEOPLE.home_address + "\r\n" + acct.PEOPLE.home_city + ", " + acct.PEOPLE.home_state + " " + acct.PEOPLE.home_zip);
}
if (fieldName == "greeting_title")
{
myMergeField.Select();
oWord.Selection.TypeText(acct.greeting_title);
}
if (fieldName == "service_name")
{
myMergeField.Select();
oWord.Selection.TypeText((acct.SERVICEs.FirstOrDefault()).service_name);
}
if (fieldName == "service_date")
{
myMergeField.Select();
oWord.Selection.TypeText((acct.SERVICEs.FirstOrDefault()).service_date.ToString());
}
}
}
oWordDoc.PrintOut();
oWordDoc.Close(Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges);
Thread.Sleep(2000);
oWord.Quit();
的錯誤是:
Server Error in '/Tracker2' Application.
Word無法讀取此文檔。它可能是腐敗的。 請嘗試下列辦法中的一個或多個: *打開並修復文件。 *使用文本恢復轉換器打開文件。 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。
異常詳細信息:System.Runtime.InteropServices.COMException:Word無法讀取此文檔。它可能是腐敗的。 請嘗試下列辦法中的一個或多個: *打開並修復文件。 *使用文本恢復轉換器打開文件。
源錯誤:
在當前web請求的執行過程中生成未處理的異常。關於異常的來源和位置的信息可以使用下面的異常堆棧跟蹤來標識。
堆棧跟蹤:
[收到COMException(0x800a141f):Word無法讀取此文檔。它可能是腐敗的。 請嘗試下列辦法中的一個或多個: *打開並修復文件。 *打開與文本恢復轉換的文件。] Microsoft.Office.Interop.Word.Documents.Add(對象&模板,對象& NewTemplate,對象& DocumentType,對象&可見)+0 Tracker.RunLetter2.Button1_Click(對象發件人,EventArgs e)在C:\ Users \ Ethan \ Documents \ Visual Studio 2010 \ Projects \ EstateTracker \ Tracker \ RunLetter2.aspx.cs中:52 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)+ 154 System.Web.UI.Page.ProcessRequestMain(布爾includeStagesBeforeAsyncPoint,布爾includeStagesAfterAsyncPoint)+3691
不要在服務中自動化Word。 – SLaks 2010-10-05 16:50:44
其不在服務中。 – ecspot 2010-10-05 18:27:43