不能隐式地将types“对象”转换为“Microsoft.Office.Interop.Excel.Range”

错误CS0266:无法将types“对象”隐式转换为“Microsoft.Office.Interop.Excel.Range”。 存在明确的转换(您是否缺less演员?)

请帮助:)

Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; Excel.Range range; xlApp = new Excel.Application(); xlWorkBook = xlApp.Workbooks.Open("C:\\Base.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(3); range= xlWorkSheet.UsedRange.Columns[1,Type.Missing]; 

Columns索引器被键入为返回object ,variablesrange键入Excel.Range 。 这种转换是不合法的(一种较不具体的types)。 您需要明确地转换结果以进行转换

 range = (Excel.Range)(xlWorkSheet.UsedRange.Columns[1,Type.Missing]); 

我认为这个问题是在这一行:

 xlWorkSheet.UsedRange.Columns[1,Type.Missing]; 

它可能会返回对象,所以你必须将其转换为Excel.Range

只有在将Microsoft.Office.Interop.Excel的Embed Interoptypes设置为false时才会出现此exception。 如果它被设置为true,那么你将不会得到这个exception

这将解决问题:

 Excel.Worksheet xlWorkSheet = (Excel.Worksheet)(xlWorkBook.Worksheets.get_Item(3)); Excel.Range range= (Excel.Range)(xlWorkSheet.UsedRange.Columns[1,Type.Missing]); 

试试这个 希望对你有效。