C#EPPlus OpenXML计数行

rd4*_*d42 37 c# excel count openxml

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

说我的工作表叫做"工作表"

int numberRows = worksheet.rows.count()?要么worksheet.rows.dimension

我当然对答案感兴趣,但如何找到答案会很酷,比如"转到定义"并寻找这个或那个,等等.

Qup*_*ppa 76

使用名为"工作表"的工作表对象,worksheet.Dimension.Start.Row和worksheet.Dimension.End.Row应该为您提供所需的信息.

worksheet.Dimension.Address将为您提供一个包含传统Excel范围格式的工作表维度的字符串(例如,对于行1-5,列1-9,'A1:I5').

有一个文档文件可用.在许多情况下,可以快速地使用库并以这种方式找到答案.EPPlus似乎设计得很好 - 至少在一切似乎都是逻辑命名的.

  • +1链接的正确答案,但我不同意你的评论"EPPlus似乎设计得很好".我自己尝试使用它并且API很简单,但我从各个人尝试的许多示例xlsx文件在库中生成了NullReferenceException.我逐步通过库来确定导致问题的原因,并且进行了许多假设,导致读取Excel生成的有效*.xlsx无法加载.如果您正在阅读用户提供的文件,我会在您的代码中将EPPlus视为滴答作响的定时炸弹. (5认同)
  • 足够公平 - 我必须承认我从未使用过这个库来阅读现有的电子表格,只是写了新的电子表格.对于后一个目的,EPPlus对我很有帮助.该项目似乎正在积极开发中,所以我们希望在未来的版本中能够解决更多错误. (2认同)

Kwe*_*wex 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;
    }
Run Code Online (Sandbox Code Playgroud)


Rol*_*aer 6

我正在使用 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;
}
Run Code Online (Sandbox Code Playgroud)