c# closedxml

closedxml c#



Leyendo desde un archivo de Excel usando ClosedXML (3)

Aquí está mi mermelada.

var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row foreach (var row in rows) { var rowNumber = row.RowNumber(); // Process the row }

Si solo usa .RowsUsed() , su rango contendrá una gran cantidad de columnas. ¡Mucho más de lo que realmente se completan!

Entonces use .RangeUsed() primero para limitar el rango. ¡Esto te ayudará a procesar el archivo más rápido!

También puede usar .Skip(1) para omitir la fila del encabezado de la columna (si tiene una).

Mi archivo de Excel no está en datos tabulares. Estoy tratando de leer un archivo de Excel. Tengo secciones dentro de mi archivo de Excel que son tabulares.

Necesito recorrer las filas 3 a 20 que son tabulares y leer los datos.

Aquí está la parte de mi código:

string fileName = "C://Folder1//Prev.xlsx"; var workbook = new XLWorkbook(fileName); var ws1 = workbook.Worksheet(1);

¿Cómo hago un bucle a través de las filas 3 a 20 y leo las columnas 3,4, 6, 7, 8? Además, si una fila está vacía, ¿cómo puedo determinar eso para poder omitirla sin leer que cada columna tiene un valor para una fila determinada?


Para acceder a una fila:

var row = ws1.Row(3);

Para comprobar si la fila está vacía:

bool empty = row.IsEmpty();

Para acceder a una celda (columna) en una fila:

var cell = row.Cell(3);

Para obtener el valor de una celda:

object value = cell.Value; // or string value = cell.GetValue<string>();

Para más información vea la documentation .


Prefiero usar el método RowsUsed() para obtener una lista de solo aquellas filas que no están vacías o que el usuario ha editado. De esta manera puedo evitar hacer cheques para cada fila si está vacía o no.

No estoy seguro de si se ajustará a la declaración del problema exacto que describió en su publicación, pero este fragmento de código puede ayudarlo a procesar los números de las filas 3 a 20 de todas las filas no vacías, ya que he filtrado el vacío. filas antes de comenzar a procesar. El filtrado de las filas no vacías antes de que comience a procesar puede afectar los números de fila que realmente pretende procesar.

Pero creo que el método RowsUsed() es muy útil en cualquier escenario general cuando procesa las filas de una hoja de Excel.

string fileName = "C://Folder1//Prev.xlsx"; using (var excelWorkbook = new XLWorkbook(fileName)) { var nonEmptyDataRows = excelWorkbook.Worksheet(1).RowsUsed(); foreach (var dataRow in nonEmptyDataRows) { //for row number check if(dataRow.RowNumber() >=3 && dataRow.RowNumber() <= 20) { //to get column # 3''s data var cell = dataRow.Cell(3).Value; } } }