【发布时间】:2011-11-24 22:39:50
【问题描述】:
我在 MS Visual Web Developer 2008 Express Ed 上进行开发时遇到了问题。 在 Windows7 64 位操作系统上开发 ASP.NET C#。
我正在尝试打开一个 Excel 文档,但它给了我Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
我确实为所有处理器(任何 CPU、x64、x86)配置了构建,但它不起作用。我在网上搜索了答案,但不知道如何处理。
奇怪的是,当我在 Microsoft Visual C# 2010 Express 上开发时,相同的代码在同一系统上运行!怎么来的?后面不是同一个dll吗?
我是否需要更改那个 COM dll 才能在 x64 系统上工作?
请帮帮我,我该怎么办?
我的代码是:
using Excel = Microsoft.Office.Interop.Excel;
xlApp = new Excel.Application();
__Log("Openning " + excelFileName);
xlWorkBook = xlApp.Workbooks.Open(excelFileName, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(2);
【问题讨论】:
-
我不完全确定这会解决你的问题,但如果你有一个 32 位 COM DLL,你可能需要使用你的项目的 x86 版本,即使你运行在 64-位窗口。
-
我认为您的想法是正确的@Andrew。如果它是 32 位 Excel,64 位 .net 将不想使用它。将其构建为 x86,它应该可以工作。
-
已经试过了.. 但是同样的事情发生了,我不明白为什么这个问题在 Visual C# 中没有出现,并且只出现在 Web 开发人员中
标签: asp.net interop hresult comobject