使用EPPlus和OpenXML,是否有人知道如何计算行的语法?
说我的工作表名为“工作表”
int numberRows = worksheet.rows.count()
?或worksheet.rows.dimension
我当然对答案很感兴趣,但如何找到答案会很酷,比如“去定义”并寻找这个或那个等等。
答案 0 :(得分:72)
使用名为worksheet
的工作表对象,worksheet.Dimension.Start.Row
和worksheet.Dimension.End.Row
应该为您提供所需的信息。
worksheet.Dimension.Address
将为您提供一个字符串,其中包含传统Excel范围格式的工作表维度(例如,对于第1-5行,第1-9列,“A1:I5”)。
有一个documentation file available。在许多情况下,可以快速地使用库并以这种方式找到答案。 EPPlus似乎设计得很好 - 至少在一切看来都是逻辑命名的。
答案 1 :(得分:14)
感谢您的提示Quppa。我在我的出价中用它来填写工作簿电子表格中的DataTable,如下所示:
/// <summary>
/// Converts a Worksheet to a DataTable
/// </summary>
/// <param name="worksheet"></param>
/// <returns></returns>
private static DataTable WorksheetToDataTable(ExcelWorksheet worksheet)
{
// Vars
var dt = new DataTable();
var rowCnt = worksheet.Dimension.End.Row;
var colCnt = worksheet.Dimension.End.Column + 1;
// Loop through Columns
for (var c = 1; c < colCnt; c++ )
{
// Add Column
dt.Columns.Add(new DataColumn());
// Loop through Rows
for(var r = 1; r < rowCnt; r++ )
{
// Add Row
if (dt.Rows.Count < (rowCnt-1)) dt.Rows.Add(dt.NewRow());
// Populate Row
dt.Rows[r - 1][c - 1] = worksheet.Cells[r, c];
}
}
// Return
return dt;
}
答案 2 :(得分:3)
我正在使用4.1版本,看起来他们已经添加了一些属性(在之前的答案的评论中提到),以使这更容易。
string Filepath = "c:\excelfile.xlsx";
FileInfo importFileInfo = new FileInfo(FilePath);
using(var excelPackage = new ExcelPackage(importFileInfo))
{
ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets[1];
int rowCount = worksheet.Dimension.Rows;
int colCount = worksheet.Dimension.Columns;
}
答案 3 :(得分:1)
非常容易:
private int GetDimensionRows(ExcelWorksheet sheet)
{
var startRow = sheet.Dimension.Start.Row;
var endRow = sheet.Dimension.End.Row;
return endRow - startRow;
}