无法转换COM对象'(Microsoft.Office.Interop.Excel._Worksheet)workbook.Sheets'

时间:2017-03-16 06:35:32

标签: c# asp.net

我试图通过这种方式读取excel文件,但收到错误:

Microsoft.Office.Interop.Excel.Application appExcel;
Microsoft.Office.Interop.Excel.Workbook workbook;
Microsoft.Office.Interop.Excel.Range range;
Microsoft.Office.Interop.Excel._Worksheet worksheet;

appExcel = new Microsoft.Office.Interop.Excel.Application();
workbook = appExcel.Workbooks.Open(path, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
// getting error on the below line
worksheet = (Microsoft.Office.Interop.Excel._Worksheet)workbook.Sheets;

错误低于..

  

无法将“System .__ ComObject”类型的COM对象强制转换为接口   键入“Microsoft.Office.Interop.Excel._Worksheet”。这个操作   失败,因为QueryInterface调用了COM组件   与IID'{000208D8-0000-0000-C000-000000000046}'的接口失败   出现以下错误:未支持此类接口(例外情况)   HRESULT:0x80004002(E_NOINTERFACE))。

对这个例外有任何想法吗?

1 个答案:

答案 0 :(得分:0)

显然,workbook.Sheets不是Worksheet的类型。

worksheet = (Microsoft.Office.Interop.Excel._Worksheet)workbook.Sheets;

<强>更新

表格是Worksheet的集合,因此请添加索引:

Microsoft.Office.Interop.Excel._Worksheet worksheet;

worksheet = (Microsoft.Office.Interop.Excel._Worksheet)workbook.Sheets[0];

希望它有所帮助!