解决64位windows server 2008上调用Excel组件出现0x800A03EC错误
2013-06-14 11:28
429 查看
开发机器为windows server 2003,安装了office 2003,从.aspx文件中调用excel处理xls文件。下面是部分代码:
确认无问题后上传到服务器,运行后却报错:
查询注册表后发现CLSID:000C101C-0000-0000-C000-000000000046是一个服务,服务名称是MSIServer,显示名称是Windows Installer.
打开组件服务,准备修改MSIServer的激活权限,确发现所有字段都是只读的。此组件在32位版windows server上字段是可读写的。此路不通。
后经过反复摸索,发现这是Office 2003的一个Bug。
解决方法如下:
配置好相关目录的读写权限与组件服务管理工具中Excel的相关权限后,需要建立如下目录:
C:\Windows\SysWOW64\config\systemprofile\Desktop。
自此,问题解决。
Try oExcel = New Microsoft.Office.Interop.Excel.Application oExcel.DisplayAlerts = False oExcel.Visible = False tmpVersion = oExcel.Version oExcel.Workbooks.Open(tmpDesFile) oWorkbook = oExcel.Workbooks(1) '1 is Workbook1 oWorksheet = oWorkbook.Worksheets(1) '1 is Sheet1 tmpRange = oWorksheet.Cells.Range(oWorksheet.Cells(1, 1), oWorksheet.Cells(1, tmpColCount)) tmpAry = tmpRange.Value2 For rId = LBound(tmpAry, 1) To UBound(tmpAry, 1) For fId = LBound(tmpAry, 2) To UBound(tmpAry, 2) tmpValue = tmpAry(rId, fId) Response.Write(tmpValue & "|") Next Response.Write("<br/>") Next oWorkbook.Close(False) Catch ex As Exception tmpResult = "Error: " & ex.ToString() 'Error: has error, return error description Finally oWorksheet = Nothing oWorkbook = Nothing If Not IsNothing(oExcel) Then oExcel.Quit() End If oExcel = Nothing GC.Collect() GC.WaitForPendingFinalizers() 'Wait excel real quit End Try
确认无问题后上传到服务器,运行后却报错:
System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT: 0x800A03EC 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) at ASP.test1_aspx.TestExcel() in C:\Test\site\Test1.aspx:line 53
计算机-默认 权限设置并未从地址 LocalHost(使用 LRPC) 使用 CLSID {000C101C-0000-0000-C000-000000000046} 和 APPID {000C101C-0000-0000-C000-000000000046} 向用户 IIS APPPOOL\Test SID (S-1-5-82-2448291975-4234089047-1793108301-2903605371-3779044736)授予对 COM 服务器应用程序的 本地 激活 权限。此安全权限可以使用组件服务管理工具进行修改。
查询注册表后发现CLSID:000C101C-0000-0000-C000-000000000046是一个服务,服务名称是MSIServer,显示名称是Windows Installer.
打开组件服务,准备修改MSIServer的激活权限,确发现所有字段都是只读的。此组件在32位版windows server上字段是可读写的。此路不通。
后经过反复摸索,发现这是Office 2003的一个Bug。
解决方法如下:
配置好相关目录的读写权限与组件服务管理工具中Excel的相关权限后,需要建立如下目录:
C:\Windows\SysWOW64\config\systemprofile\Desktop。
自此,问题解决。
相关文章推荐
- 解决64位windows server 2008上调用Excel组件出现0x800A03EC错误
- 解决64位windows server 2008上调用objExcel.Workbooks.Open(xlsFile)出现Exception from HRESULT: 0x800A03EC错误
- (用iis调用com来操纵Excel) 检索 COM 类工厂中 CLSID 为{00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。8000401A的错误解决方法
- 在Windows Server 2008 R2(64位)上安装SharePoint 2007出现的一个错误的解决方法
- 在Windows Server 2008 R2(64位)上安装SharePoint 2007出现的一个错误的解决方法
- 生成Excel”服务器进程80070005“错误和“异常来自 HRESULT:0x800A03EC”的错误,windows server 2008 32位和64位下的特殊设置。
- 64位Windows 2008/7下配置IIS+PHP出现404.17错误的解决办法
- 解决导出excel中出现的错误:只能在执行 Render() 的过程中调用 RegisterForEventValidation
- 导出Excel出现“异常来自 HRESULT:0x800A03EC”错误的解决方法(已验证)
- 解决SQL Server 2008安装时出现不能在控件上调用 Invoke 或 BeginInvoke错误的方法
- Office 开发系列:ASP.Net调用Excel组件错误的问题解决
- 解决Excel 互操作错误"检索COML类工厂中 CLSID为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005"
- window2008 64位系统无法调用Microsoft.Office.Interop组件进行文件另存的解决办法
- 技术QA:如何解决在Windows Server 2008 R2上安装证书服务重启后出现 CertificationAuthority 91错误事件? 推荐
- C#在调用office的PowerPoint时出现 对 COM 组件的调用返回了错误 HRESULT E_FAIL。解决办法。
- 最近在ArcGIS Engine开发中关于调用gp工具过程出现COM 组件的调用返回了错误 HRESULT E_FAIL 错误的解决方法 和 学习oracle中遇到的一些问题总结
- 解决SQL Server 2008安装时出现不能在控件上调用 Invoke 或 BeginInvoke错误或者需要重启N次后还提示需要重启的方法
- windows server 2008 打开 sharepoint项目解决方案后,关闭解决方案出现错误解决
- ASP.Net调用Excel组件错误的问题解决