我正在尝试在C#应用程序中打开WorkBook。当我调用Open方法时,它返回System__COMObject
而不是工作簿。这是我的代码:
Microsoft.Office.Interop.Excel._Application excelApp = new Application();
Microsoft.Office.Interop.Excel._Workbook wb = new WorkBook();
wb = excelApp.Workbooks.Open(filepath, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
错误是System.InvalidCastException
。我有什么想法吗?
编辑:我现在不安装任何COM软件包或调整任何设置。我是否需要任何COM组件才能与Interop一起使用?
答案 0 :(得分:0)
不确定您获取System.InvalidCastException的位置,但我认为您不能以这种方式构造Workbook实例。只需简化为......
Microsoft.Office.Interop.Excel._Workbook wb = excelApp.Workbooks.Open(...);
答案 1 :(得分:0)
好的,你有一些奇怪的事情,因为Excel interop中的“WorkBook”是一个接口,而不是一个类。 “= new WorkBook()”根本不应该工作。
var excelApp = new Application();
var wb = excelApp.Workbooks.Open( filepath, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing ) as Workbook;
应该告诉你你所追求的是什么。声明中的类型(使用_Application)也看起来有点糟糕。
此示例使用Excel的COM参考,同时确保参考属性中的“嵌入互操作类型”选项设置为“True”。
答案 2 :(得分:0)
我在深入研究这个问题之后。我发现Microsoft.Interop与Excel有一些已知问题。我最终决定采用另一种解决方案Flexcel。