C # EPPlus OpenXML подсчет строк - PullRequest
       36

C # EPPlus OpenXML подсчет строк

35 голосов
/ 24 января 2011

С EPPlus и OpenXML кто-нибудь знает синтаксис для подсчета строк?

Скажите, что мой рабочий лист называется "рабочий лист"

int numberRows = worksheet.rows.count()?или worksheet.rows.dimension

Я, конечно, заинтересован в ответе, но как найти ответ было бы круто, например "Перейти к определению" и искать то или иное и т. д.

Ответы [ 4 ]

72 голосов
/ 24 января 2011

При наличии объекта листа с именами worksheet, worksheet.Dimension.Start.Row и worksheet.Dimension.End.Row предоставит вам необходимую информацию.

worksheet.Dimension.Address даст вам строку, содержащую измерения листа в традиционном диапазоне Excelформат (например, 'A1: I5' для строк 1-5, столбцы 1-9).

Доступен файл документации .Во многих случаях может быть так же быстро поиграться с библиотекой и найти ответ таким образом.EPPlus, кажется, хорошо спроектирован - все, по крайней мере, логически названо.

14 голосов
/ 17 сентября 2012

Спасибо за подсказку, Куппа.Я использовал его в своей заявке, чтобы заполнить таблицу данных из электронной таблицы, как показано ниже:

    /// <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;
    }
3 голосов
/ 14 октября 2016

Я работаю с версией 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;
}
1 голос
/ 28 июня 2018

Довольно просто с:

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