我正在尝试在我的Asp.net应用程序中创建一个进程,它将打开一个Microsoft模板(存储在服务器上)并编辑文档中的特定字段,然后将该文件下载到用户桌面。这在我的本地服务器上很好,但是当被推到我们的生产服务器时,它会失败(没有错误或警告)。下面是我的代码:
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 然后,代码将输出位置发送到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)据我所读,Microsoft不支持服务器端Office产品的自动化。话虽如此,是否有办法解决这一问题,还是有其他办法?我已经验证了运行该应用程序的服务器已经安装了Word,并且用户拥有正确的权限。
如前所述,我需要能够在服务器上读取/编辑文件,并将文件下载给用户。如果有人有任何建议,请告诉我。
谢谢
发布于 2013-05-10 14:27:59
您指出,在服务器上,代码在这一行中失败:
Dim objDoc As Word.Document =objWordApp.Documents.Open(位置)
您是否能够向应用程序添加调试器并查看确切的错误?
可能有几件事:
致以敬意,
https://stackoverflow.com/questions/16483028
复制相似问题