【问题标题】:Cannot implicitly convert type 'object' to 'Microsoft.Office.Interop.Excel.Range'无法将类型“对象”隐式转换为“Microsoft.Office.Interop.Excel.Range”
【发布时间】:2011-07-26 15:37:46
【问题描述】:

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

【问题讨论】:

  • 你试过 range= (Range) xlWorkSheet.UsedRange.Columns[1,Type.Missing]; ?

标签: c# excel interop


【解决方案1】:

Columns 索引器的类型为返回 object,变量 range 的类型为 Excel.Range。这种转换是不合法的(一个不太具体的类型到一个更具体的类型)。您需要显式转换结果以使转换工作

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我认为问题出在这一行:

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

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

      【讨论】:

        【解决方案4】:

        这样就可以解决问题了:

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

        试试这个。希望它对你有用。

        【讨论】:

          猜你喜欢
          • 2013-06-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-14
          • 1970-01-01
          相关资源
          最近更新 更多