我刚刚开始在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
}
三个问题:
worksheet
和cell
之前进行投射。为什么?worksheet
和cell
都有System._COMObject
类型,其内部字段都为空。那是为什么?excelApplication.
时,workbook.
,worksheet.
或cell.
intellisense会列出可用的字段和方法,并知道可用参数的名称。但它不显示任何字段,方法或参数的描述。在我看来,我正在以某种方式访问Microsoft.Office.Interop.Excel
命名空间,但这种方式让Visual Studio感到困惑。