为什么我必须在使用Microsoft.Interop.Excel时不断进行投射?

时间:2018-02-01 19:37:28

标签: c# excel

我刚刚开始在C#中使用excel,我注意到了一些我认为相关的神秘事物。

对于初学者来说,这是我的代码:

using Excel = Microsoft.Office.Interop.Excel;

...

static void ExcelReader(string path)
{
    Excel.Application excelApplication = new Excel.Application();
    Excel.Workbook workbook = excelApplication.Workbooks.Open(path);
    Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1]; //Why the cast?
    Excel.Range cell = (Excel.Range)worksheet.Cells[1, 1]; //Another cast?
    string value = cell.Value.ToString();
    Console.WriteLine("the value in cell a1 is "+value); //I'm shocked this actually worked
}

三个问题:

  1. 正如我在代码中所评论的那样,我需要在将值分配给worksheetcell之前进行投射。为什么?
  2. 当我调试时,我发现worksheetcell都有System._COMObject类型,其内部字段都为空。那是为什么?
  3. 当我输入excelApplication.时,workbook.worksheet.cell. intellisense会列出可用的字段和方法,并知道可用参数的名称。但它不显示任何字段,方法或参数的描述。
  4. 在我看来,我正在以某种方式访问​​Microsoft.Office.Interop.Excel命名空间,但这种方式让Visual Studio感到困惑。

0 个答案:

没有答案