通过床单循环

时间:2016-02-15 18:53:37

标签: c# .net excel epplus

我正在尝试使用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'接受'object'类型的第一个参数(你是否缺少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遍历所有工作表。

2 个答案:

答案 0 :(得分:3)

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#

答案 1 :(得分:1)

对于类型而言,C#比VB.NET更严格(没有Option Strict)。

您需要声明一个Workbook类型的变量而不是object:

OpenOfficeXml.Workbook Workbook01 = new ...

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