C#EPPlus OpenXML计数行
有了EPPlus和OpenXML,有人知道如何计算行数的语法吗 假设我的工作表名为“工作表”C#EPPlus OpenXML计数行,c#,excel,count,openxml,C#,Excel,Count,Openxml,有了EPPlus和OpenXML,有人知道如何计算行数的语法吗 假设我的工作表名为“工作表” int numberRows=工作表.rows.count()?或工作表.行.维度 我当然对答案感兴趣,但是如何找到答案会很酷,比如“转到定义”并查找这个或那个,等等。使用名为工作表,工作表.Dimension.Start.Row和工作表.Dimension.End.Row的工作表对象应该会提供您需要的信息 工作表.Dimension.Address将提供一个字符串,其中包含传统Excel范围格式的工作
int numberRows=工作表.rows.count()
?或工作表.行.维度
我当然对答案感兴趣,但是如何找到答案会很酷,比如“转到定义”并查找这个或那个,等等。使用名为
工作表,工作表.Dimension.Start.Row
和工作表.Dimension.End.Row
的工作表对象应该会提供您需要的信息
工作表.Dimension.Address
将提供一个字符串,其中包含传统Excel范围格式的工作表维度(例如,第1-5行第1-9列的“A1:I5”)
有一个问题。在许多情况下,使用库并以这种方式找到答案可能同样快。EPPlus似乎设计得很好——至少所有东西的命名都符合逻辑。感谢Quppa的提示。我在投标中使用它从工作簿电子表格填充数据表,如下所示:
/// <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;
}
//
///将工作表转换为数据表
///
///
///
专用静态数据表工作表TTODataTable(Excel工作表)
{
//瓦尔斯
var dt=新数据表();
var rowCnt=worksheet.Dimension.End.Row;
var colCnt=worksheet.Dimension.End.Column+1;
//循环通过列
对于(var C=1;C<COLCNT;C++)
{
//添加列
Add(newdatacolumn());
//循环行
对于(var r=1;r
我正在使用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;
}
+我想通过链接获得正确答案,但我不同意您关于“ePlus似乎设计得很好”的评论。我自己也尝试过使用它,API很简单,但是我尝试过的许多示例xlsx文件都在库中生成了一个NullReferenceException。我仔细检查了库以确定问题的原因,并做出了许多假设,导致读取Excel生成的有效*.xlsx失败。如果您正在阅读用户提供的文件,我会将EPPlus视为您代码中的定时炸弹。很公平——我必须承认,我从未使用该库阅读现有的电子表格,只是编写新的表格。对于后一个目的,EPPlus为我提供了很好的服务。该项目似乎正在积极开发中,所以我们希望在未来的版本中解决更多的bug。我用EPPlus读取现有的XLS/XLSX文件从来没有遇到过问题。也许你用的是测试版。那么使用工作表。维度。行呢?很好的帖子+1.您有关于EPPlus的好文档吗?我没有,但下载中包含的示例很有帮助。现在有更有效的方法可以使用维度中的“行”和“列”属性来实现这一点。使用worker.Dimensions.Rows怎么样?