使用EPPlus和OpenXML,是否有人知道如何计算行数的语法?
假设我的工作表名为“worksheet”
int numberRows = worksheet.rows.count()
?还是 worksheet.rows.dimension
我当然对答案很感兴趣,但是如何找到答案也很酷,例如“转到定义”并查找这个或那个等。
使用EPPlus和OpenXML,是否有人知道如何计算行数的语法?
假设我的工作表名为“worksheet”
int numberRows = worksheet.rows.count()
?还是 worksheet.rows.dimension
我当然对答案很感兴趣,但是如何找到答案也很酷,例如“转到定义”并查找这个或那个等。
使用名为worksheet
的工作表对象,worksheet.Dimension.Start.Row
和worksheet.Dimension.End.Row
应该给出您所需的信息。
worksheet.Dimension.Address
将给出一个字符串,其中包含传统Excel范围格式的工作表维度(例如'A1:I5'表示第1-5行,第1-9列)。
有一个可用的文档文件。在许多情况下,通过尝试使用库并找到答案可能同样快速。EPPlus似乎设计得很好 - 至少所有东西都被命名得很合理。
感谢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;
}
我正在使用版本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;
}
使用以下方法非常简单:
private int GetDimensionRows(ExcelWorksheet sheet)
{
var startRow = sheet.Dimension.Start.Row;
var endRow = sheet.Dimension.End.Row;
return endRow - startRow;
}