2013-05-10 70 views
0

我想在我的Asp.net應用程序中創建一個進程,它將打開一個Microsoft Word模板(存儲在服務器上)並編輯文檔中的特定字段,然後下載文件傳輸到用戶桌面。這在我的本地服務器上工作正常,但是當推送到我們的生產服務器時,它失敗(沒有錯誤或警告)。下面是我的代碼有:使用ASP.Net自動化Word文檔處理

location = mappedPath & ConfigurationManager.AppSettings("defaultTemplate") 
Dim objWordApp As New Microsoft.Office.Interop.Word.Application 
objWordApp.Visible = False 
Dim objDoc As Word.Document = objWordApp.Documents.Open(location) 
objDoc.Activate() 
objDoc.Content.Find.Execute(FindText:="[SomeField]", ReplaceWith:=myField, Replace:=Word.WdReplace.wdReplaceAll) 
objDoc.Content.Find.Execute(FindText:="[someId]", ReplaceWith:=myId, Replace:=Word.WdReplace.wdReplaceAll) 
outputLocation = mappedPath & "Temp/Posting_" & Now.ToString("MMddyyyy_hhmmss") & ".docx" 
objDoc.SaveAs(outputLocation) 

objDoc.Close(Word.wdSaveOptions.wdDoNotSaveChanges) 
objDoc = Nothing 
objWordApp.Quit(Word.wdSaveOptions.wdDoNotSaveChanges) 
objWordApp = Nothing 

的代碼,然後繼續到outputlocation發送到RESPONSE.WRITE緩衝,就像這樣:

Dim fi As FileInfo = New FileInfo(outputLocation) 
    If fi.Exists Then 
    Response.Clear() 
    Response.ClearHeaders() 
    Response.ClearContent() 
    Response.Charset = "UTF-8" 
    Response.ContentEncoding = System.Text.Encoding.UTF8 
    Response.AddHeader("content-disposition", "attachment; filename=" + Server.UrlEncode(fi.Name)) 
    Response.AddHeader("Content-Type", "application/msword") 
    Response.ContentType = "application/msword" 
    Response.AddHeader("Content-Length", fi.Length.ToString()) 
    Response.WriteFile(fi.FullName) 
    HttpContext.Current.ApplicationInstance.CompleteRequest() 
Else 
    'log it 
End If 

此代碼失敗,在服務器上,在這行:

Dim objDoc As Word.Document = objWordApp.Documents.Open(location) 

從我讀過的,微軟不支持服務器端的Office產品的自動化。這就是說,有沒有辦法解決這個問題,還是有其他選擇嗎?我已驗證運行該應用程序的服務器是否安裝了Word,並且該用戶具有正確的權限。

正如我所說的,我需要能夠讀取/編輯服務器上的文件並將文件下載到用戶。如果有人有任何建議,請告訴我。

感謝

回答

0

你說,代碼失敗,在服務器上,在這一行:

昏暗objDoc作爲Word.Document = objWordApp.Documents.Open(位置)

您能將調試器添加到應用程序並查看確切的錯誤是什麼?

這可能是幾件事情:

  1. 位置可能不正確
  2. word.dll可能無法訪問
  3. 字的版本可能不同

問候,

+0

此應用程序位於服務器上,我無法調試。但是,我確實記錄了任何錯誤。沒有錯誤產生,它只是掛起。 – jason 2013-05-14 14:41:29

+0

@jason你能找到解決方案嗎? – 2017-01-14 08:15:24