在VB.Net Excel工作表分配不编译

我正在将VB6应用程序转换为VB.Net,并且遇到了基本问题。 我从下面开始:

Dim xl As Excel.Application Dim xlsheet As Excel.Worksheet Dim xlwbook As Excel.Workbook xl = New Excel.Application xlwbook = xl.Workbooks.Open(my_data.file_name) xlsheet = xlwbook.Sheets(1) 

但最后一行不能编译; 它报告

Option Strict On不允许从“Object”到“Microsoft.Office.Interop.Excel.Worksheet”的隐式转换

我可以通过replace这个行来解决这个问题

 xlsheet = CType(xlwbook.Sheets(1), Excel.Worksheet) 

但是对我来说这看起来不对。 如果分配是正确的,我会认为这个对象自然应该有正确的types。

所以:有人知道我应该在这里做什么正确的事情吗?

这是不可能的,没有types的转换(如果Option Strict Is On),因为.NET不能理解VBA集合。

我相信这个错误报告 这个问题有关:

如果你看看这个页面上的Excel示例(将代码从VBA转换到Visual Basic .NET) ,那么它将显示以下代码:

 Dim ThisWorksheet As Excel.Worksheet = _ CType(ThisWorkbook.Worksheets.Item("Sheet1"), Excel.Worksheet) 

关于这个问题, 在这里和这里有几个post,但似乎没有更好的方法。