web-dev-qa-db-fra.com

Nombre de lignes C # EPPlus OpenXML

Avec EPPlus et OpenXML, est-ce que quelqu'un connaît la syntaxe sur la manière de compter les lignes?

Dites que ma feuille de travail s'appelle "feuille de travail"

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

La réponse m’intéresse certes, mais il serait bien de trouver la réponse, par exemple «Aller à la définition» et de rechercher ceci ou cela, etc.

30
rd42

Avec un objet de feuille de calcul appelé 'feuille de travail', worksheet.Dimension.Start.Row et worksheet.Dimension.End.Row devraient vous fournir les informations dont vous avez besoin.

worksheet.Dimension.Address vous donnera une chaîne contenant les dimensions de la feuille de calcul au format de plage Excel traditionnel (par exemple, 'A1: I5' pour les lignes 1 à 5, les colonnes 1 à 9).

Il existe un fichier de documentation disponible . Dans de nombreux cas, il peut être aussi rapide de jouer avec la bibliothèque et de trouver la réponse de cette façon. EPPlus semble être bien conçu - tout semble avoir un nom logique, du moins.

69
Quppa

Merci pour ce conseil Quppa. Je l'ai utilisé dans mon offre pour renseigner un DataTable à partir d'une feuille de calcul de classeur, comme ci-dessous:

    /// <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;
    }
13
Kwex

Je travaille avec la version 4.1 et il semblerait qu'ils aient ajouté quelques propriétés (mentionnées dans les commentaires des réponses précédentes) pour faciliter cela.

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;
}
3
Roland Schaer

Assez facile avec:

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