迁移后新服务器上的Excel Interlop错误

时间:2018-03-09 21:08:23

标签: excel vb.net service server

我最近将Windows服务迁移到了我公司的新服务器。此服务使用模板从sql表中读取数据并从中构建excel文档。不幸的是,即使使用了所有相同的代码,我在尝试执行服务时也遇到了新的错误。

Exception from HRESULT: 0x800A03EC 
Stack Trace: 
at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object 
UpdateLinks, Object ReadOnly, Object Format, Object Password, Object 
WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object 
Delimiter, Object Editable, Object Notify, Object Converter, Object 
AddToMru, Object Local, Object CorruptLoad)

这是执行错误的代码:

        Dim xlApp As Excel.Application
        Dim xlWorkBook As Excel.Workbook
        Dim xlWorkSheet As Excel.Worksheet

        xlApp = New Excel.ApplicationClass
        xlWorkBook = xlApp.Workbooks.Open(System.AppDomain.CurrentDomain.BaseDirectory() & strTemplatePath)

旧服务器正在运行Microsoft Windows Server 2003 SP2,新服务器正在运行Microsoft Windows Server 2012 Datacenter。两者都安装了Excel 2003。

我尝试过的事情:

祈祷

为执行应用程序的用户提供权限

将我的CurrentCulture设置为" en-US"

如果程序文件目录出现奇怪的问题,请将模板文件移动到c:\ Templates

匹配" Microsoft Excel应用程序"的两个服务器设置在dcomcnfg和mmc-32中(既未设置为"交互式用户")

用我能找到的最新版本(15.0.4795.1000)替换当前使用的Excel Interlop文件(11.0.8161.0)

任何帮助将不胜感激。感谢

回应评论:

检查BaseDirectory和strTemplatePath会生成到我的excel工作簿的有效路径。如果我将其直接粘贴到资源管理器地址栏中,则会打开该文件。

1 个答案:

答案 0 :(得分:0)

我找到了答案,结果证明是以下网址的超级随机: https://www.codeproject.com/Questions/574791/COMplusExceptionplushresultplus-x-a-ecplusatplu

要让它开始工作,我所要做的就是创建以下目录:

C:\的Windows \ Syswow64资料\配置\ systemprofile \桌面