循环浏览工作表

本文关键字:工作 浏览 循环 | 更新日期: 2023-09-27 18:34:38

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

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

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

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

这给出了一个错误,内容如下:

"对象"不包含"工作表">

的定义,并且找不到接受类型为"对象"的第一个参数的扩展方法"工作表"(您是否缺少 using 指令或程序集引用?

这是我在 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){

有关差异的说明,请参阅 C# 中"var"和"对象"之间的差异。

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

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

OpenOfficeXml.Workbook Workbook01 = new ...

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