Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#EPPlus OpenXML计数行_C#_Excel_Count_Openxml - Fatal编程技术网

C#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范围格式的工作

有了EPPlus和OpenXML,有人知道如何计算行数的语法吗

假设我的工作表名为“工作表”

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怎么样?