无法将类型'object'隐式转换为'Microsoft.Office.Interop.Excel.Range'

时间:2011-03-31 06:41:56

标签: c# excel interop

错误CS0266:无法将类型'object'隐式转换为'Microsoft.Office.Interop.Excel.Range'。存在显式转换(您是否错过了演员?)

请帮助:)

    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];

4 个答案:

答案 0 :(得分:6)

键入Columns索引器以返回object,并将变量range键入Excel.Range。此转换不合法(对于更具体的类型,更不具体的类型)。您需要显式转换结果才能使转换工作

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

答案 1 :(得分:1)

我认为问题出在这一行:

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

它可能会返回对象,因此您必须将其强制转换为Excel.Range

答案 2 :(得分:1)

仅当Microsoft.Office.Interop.Excel的Embed Interop类型设置为false时才会出现此异常。如果设置为true,则不会出现此异常

答案 3 :(得分:0)

这将解决问题:

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

试试吧。希望它适合你。