错误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];
答案 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]);
试试吧。希望它适合你。