Не удается неявно преобразовать тип «объект» в «Microsoft.Office.Interop.Excel.Range» - PullRequest
1 голос
/ 31 марта 2011

Ошибка CS0266: невозможно неявное преобразование типа «объект» в «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 ]

6 голосов
/ 31 марта 2011

Для индексатора Columns вводится object, а для переменной range вводится Excel.Range.Это преобразование недопустимо (менее специфический тип к более конкретному типу).Вам нужно явно привести результат, чтобы преобразование работало

range = (Excel.Range)(xlWorkSheet.UsedRange.Columns[1,Type.Missing]);
2 голосов
/ 18 октября 2013

Вы получаете это исключение, только если для типов Embed Interop объекта Microsoft.Office.Interop.Excel установлено значение false. Если установлено значение true, вы не получите это исключение

1 голос
/ 31 марта 2011

Я думаю, что проблема в этой строке:

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

он, вероятно, возвращает объект, поэтому вы должны привести его к Excel.Range

0 голосов
/ 03 июля 2014

Это решит проблему:

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

Просто попробуй это. Надеюсь, это работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...