我正在维护一个目前引用Interop.Excel.dll(v 1.5.0.0)的网络应用程序。
Interop.Excel.dll用于在Excel 2003下访问.xls文件,然后在Excel 2010下访问.xlsx / m文件。一切正常。
网络应用程序被移动到另一台计算机(其中安装了带有“Office 2007 Compatability Pack”的Excel 2003),现在无法打开.xlsx / m文件(出现错误的堆栈跟踪,如下所示)。
除了在文件打开时看到小型Compatability Pack“转换”对话框的时候,该机器上的人类打开.xlsx / m文件没有问题。
是否存在一些已知的组合限制:Excel 2003; 'Office 2007 Comp Pack';和.xlsx / m文件?
STACKTRACE
2013-04-23 16:03:00.7192|Error|An error occurred in OpenCloseManager. Details Follow:
Exception Type ---
System.Runtime.InteropServices.COMException
Message ---
The server threw an exception. (Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT))
HelpLink ---
Source ---
Interop.Excel
StackTrace ---
at 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 TCG.CRRExDBInterface.BO.SpreadSheetHelper.manageExcelOpen(Boolean blnUpdateLinks) in D:\foo\ExcelDBInterface-4.7.1.0\ExcelDBInterface-4.7.1.0\ExcelDBInterface\CRRExDBInterface\App_Code\BusinessObject\SpreadSheetHelper.cs:line 1920
TargetSite ---
Excel.Workbook Open(System.String, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object)|MasterSubPage.parseSecurityInfoFromSpreadsheetAndSave => SpreadSheetHelper..ctor => SpreadSheetHelper.manageExcelOpen
答案 0 :(得分:0)
勇敢的灵魂是将办公室互操作放在网络应用程序中的人。如果您在服务器上检查使用COM API的文档,主要有两个原因:
在任何一种情况下,我都怀疑Excel的版本是你的问题所在。
如果我是你,我建议“管理”使用OpenXmlSDK升级应用程序。这不是一个简单的开关,但根据你的情况,它可能是值得的 - 你可以多线程,没有悬挂的隐藏实例等,它更快,你可以很好地控制正在发生的事情。缺点是学习曲线陡峭,缺乏复制/粘贴类型的功能 - 必须解决这个问题
答案 1 :(得分:0)
嗯它值得(并且给出这个问题一些解决方案)我放弃了尝试使用旧机器并移动到安装了Excel 2010的机器。根本不是一个答案,但是,我希望,其他人有一些迹象表明它不能解决我不得不提供的资源。