2011-01-23 15 views
27

Con EPPlus y OpenXML, ¿alguien sabe la sintaxis sobre cómo contar las filas?C# filas de recuento EPPlus OpenXML

decir que mi hoja de trabajo se llama "hoja de cálculo"

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

Por cierto, estoy interesado en la respuesta, pero la forma de encontrar la respuesta estaría bien, como "Ir a definición" y buscar esto o aquello, etc.

+0

nice post .. +1 .. ¿Tiene alguna buena documentación sobre EPPlus? – MacGyver

+0

No, pero los ejemplos que figuran en la descarga fueron útiles. – rd42

+1

Hay formas más eficientes de hacer esto ahora usando las propiedades "Filas" y "Columnas" de la DImension. –

Respuesta

58

Con un objeto de hoja de llamada 'hoja de trabajo', hoja de trabajo. Dimensión.Inicio.Ruta y hoja de cálculo.Dimensión.En.río.Razón debe darle la información que necesita.

hoja de trabajo.Dimension.Address le dará una cadena que contiene las dimensiones de la hoja de cálculo en el formato de rango tradicional de Excel (por ejemplo, 'A1: I5' para las filas 1-5, columnas 1-9).

Hay un documentation file available. En muchos casos, puede ser igual de rápido jugar con la biblioteca y encontrar la respuesta de esa manera. EPPlus parece estar bien diseñado, todo parece tener un nombre lógico, al menos.

+5

+1 para una respuesta correcta con un enlace, pero no estoy de acuerdo con su comentario sobre "EPPlus parece estar bien diseñado". Intenté usarlo yo mismo y la API es sencilla, pero muchos archivos xlsx de muestra que probé de varios individuos generaron una NullReferenceException dentro de la biblioteca. Pasé por la biblioteca para identificar qué causaba el problema y se hicieron muchas suposiciones que hacen que la lectura válida * .xlsx generada por Excel no se cargue. Vería EPPlus como una bomba de tiempo en su código si está leyendo archivos proporcionados por el usuario. –

+2

Justo lo suficiente - Debo admitir que nunca he usado la biblioteca para leer hojas de cálculo existentes, simplemente escribiendo nuevas. Para este último propósito, EPPlus me ha servido bien. El proyecto parece estar en desarrollo activo, así que esperemos que se solucionen más errores en lanzamientos futuros. – Quppa

+1

Nunca he tenido problemas para leer archivos XLS/XLSX existentes con EPPlus. Tal vez usaste una versión beta. –

12

Gracias por ese consejo Quppa. Lo utilicé en mi intento de rellenar un DataTable a partir de una hoja de cálculo de libro de trabajo de la siguiente manera:

/// <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; 
    } 
+1

Gracias por publicar su código @Kwex. – rd42

+0

@Kwex Tu respuesta me ha ayudado, así que +1 y Gracias ... – RajeshKdev

+0

¿Qué hay de usar WorkSheet.Dimensions.Rows? – MGE

1

estoy trabajando con la versión 4.1 y parece que se han añadido algunas propiedades (mencionado en los comentarios de las respuestas anteriores) para que este más fácil.

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