我正在尝试使用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遍历所有工作表。
答案 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关键字让编译器确定变量的正确类型。