我在MS Visual Web Developer 2008 Express Ed上开发时遇到了一个问题。开发ASP。. NET c# on Windows7 64位操作系统
我想打开一个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);
在互联网上挖掘后,我发现微软与COM对象的互操作有一个错误(至少我的情况是MS Excel 2010)。
这个错误是。net检查你的线程(c#或VB代码)本地化是否适合你之前安装的MS Excel本地化,如果不是,它告诉Microsoft.Office.Interop
库是旧的或无效的。
您的线程本地化源自您的计算机区域设置(来自控制面板->区域和语言)
那么有两个选项可以解决这个问题:
- 更改线程定位(通过代码)
- 为Office安装语言包
第一个解决方案是这样的:
using System.Threading; // For setting the Localization of the thread to fit
using System.Globalization; // the of the MS Excel localization, because of the MS bug
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
excelFileName = System.IO.Path.Combine(excelPath, "Ziperty Buy Model for Web 11_11_2011.xlsm");
希望有帮助:)只一天,