遍历工作表

Looping through sheets

我正在尝试使用 EPPlus 循环遍历 Excel 工作簿的工作表,但我没有运气弄清楚语法。

我现在正在使用 C#。我可以在 VB.NET 中使用它,但不能在 C# 中使用。

这就是我所拥有的 不是 在 C# 中工作的东西:

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

foreach (object sheet01 in Workbook01.Worksheets){

    // Code here.

}

这给出了一个错误:

'object' does not contain a definition for 'Worksheets' and no extension method 'Worksheets' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)

这是我在 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 进行比较可能是错误的,但是,无论哪种方式,我都需要弄清楚如何在 C# 中使用 EPPlus 循环遍历所有工作表。

Workbook01 在这里是一个 object,所以你只能访问 System.Object:

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

如果不想写出类型名,使用var:

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

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

foreach (var sheet01 in Workbook01.Worksheets){

有关差异的解释,请参阅 Difference between "var" and "object" in C#

C# 在类型方面比 VB.NET 严格得多(没有 Option Strict)。

您需要声明一个工作簿类型的变量而不是对象:

OpenOfficeXml.Workbook Workbook01 = new ...

VB.NET 发挥了一些作用,因此您可以在对象变量上使用 Workbook 的属性和方法。 C# 希望您指定正确的类型以避免误解。您还可以使用 var 关键字让编译器确定变量的正确类型。