【问题标题】:C# EPPlus OpenXML count rowsC# EPPlus OpenXML 计数行
【发布时间】:2019-04-19 00:57:43
【问题描述】:

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

假设我的工作表被称为“工作表”

int numberRows = worksheet.rows.count()?或worksheet.rows.dimension

我当然对答案很感兴趣,但是如何找到答案会很酷,比如“转到定义”并查找这个或那个等。

【问题讨论】:

  • 不错的帖子 .. +1 .. 你有没有关于 EPPlus 的好文档?
  • 我不知道,但下载中包含的示例很有帮助。
  • 现在有更有效的方法可以使用 DImension 中的“行”和“列”属性。

标签: c# excel count openxml


【解决方案1】:

使用名为worksheetworksheet.Dimension.Start.Rowworksheet.Dimension.End.Row 的工作表对象应该为您提供所需的信息。

worksheet.Dimension.Address 将为您提供一个字符串,其中包含传统 Excel 范围格式的工作表尺寸(例如,“A1:I5”表示第 1-5 行、第 1-9 列)。

有一个documentation file available。在许多情况下,使用库并以这种方式找到答案可能同样快。 EPPlus 似乎设计得很好——至少,一切似乎都是合乎逻辑的。

【讨论】:

  • +1 以获得正确答案和链接,但我不同意您关于“EPPlus 似乎设计精良”的评论。我自己尝试使用它,并且 API 很简单,但是我从不同的人那里尝试的许多示例 xlsx 文件在库中生成了 NullReferenceException。我逐步浏览了库以确定导致问题的原因,并且做出了许多假设导致读取 Excel 生成的有效 *.xlsx 无法加载。如果您正在阅读用户提供的文件,我会将 EPPlus 视为代码中的定时炸弹。
  • 很公平 - 我必须承认我从未使用该库来阅读现有的电子表格,只是编写新的电子表格。对于后一个目的,EPPlus 对我很有帮助。该项目似乎正在积极开发中,所以我们希望在未来的版本中解决更多错误。
  • 我从来没有遇到过使用 EPPlus 读取现有 XLS/XLSX 文件的问题。也许您使用的是测试版。
  • 使用 WorkSheet.Dimensions.Rows 怎么样?
【解决方案2】:

感谢 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;
    }

【讨论】:

  • 使用 WorkSheet.Dimensions.Rows 怎么样?
【解决方案3】:

我正在使用 4.1 版,看起来他们添加了一些属性(在以前的答案中的 cmets 中提到)以使这更容易。

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;
}

【讨论】:

    【解决方案4】:

    很容易:

    private int GetDimensionRows(ExcelWorksheet sheet)
    {
        var startRow = sheet.Dimension.Start.Row;
        var endRow = sheet.Dimension.End.Row;
        return endRow - startRow;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多