循环通过床单

我正在试图使用EPPlus来循环显示Excel工作簿的表格,但是我没有任何计算语法的运气。

我正在使用C#。 我能够在VB.NET中工作,但不是C#。

这是我没有在C#中工作的:

object Workbook01 = new OfficeOpenXml.ExcelPackage(WorkbookFilePath).Workbook; foreach (object sheet01 in Workbook01.Worksheets){ // Code here. } 

这给出了一个错误,说:

'object'不包含'Worksheets'的定义,也没有扩展方法'Worksheets'可以接受types'object'的第一个参数(你是否缺lessusing指令或程序集引用?)

这是我在VB.NET中的工作正常:

 Dim Wkbk As Object Wkbk = New OfficeOpenXml.ExcelPackage(wkbkFilePath).Workbook For Each sheet01 In Wkbk.Worksheets ' Code here Next sheet01 

也许这是一个错误的比较C#VB.NET为这个项目,但无论如何,我需要弄清楚如何循环所有工作表与EPPlus在C#中。

Workbook01是一个object ,所以你只能访问System.Object的成员:

 object Workbook01 = new OfficeOpenXml.ExcelPackage(WorkbookFilePath).Workbook; 

如果您不想写出types名称,请使用var

 var Workbook01 = new OfficeOpenXml.ExcelPackage(WorkbookFilePath).Workbook; 

你应该在你的循环中做同样的事情:

 foreach (var sheet01 in Workbook01.Worksheets){ 

请参阅C#中“var”和“object”的区别以获取有关区别的说明。

C#比VB.NET更严格(没有Option Strict)。

您需要声明一个types为Workbook的variables而不是object:

 OpenOfficeXml.Workbook Workbook01 = new ... 

VB.NET做了一些神奇的事情,以便您可以使用对象variables的工作簿的属性和方法。 C#希望您指定正确的types以避免误解。 您也可以使用var关键字来让编译器确定variables的正确types。