Ir al contenido

Excel Online — Read range

Tipo: excelonline-read-range  ·  Paquete: Excel Online v1.0.4  ·  Salida: DataTable \| List

Lee un rango de celdas de una hoja. Con has-headers la primera fila se toma como encabezados y el resultado es un DataTable; sin encabezados, devuelve una lista de filas con los valores en su tipo original.

Opera sobre la sesión creada con Excel Online — Connect. Pásala en el parámetro session, o coloca esta actividad dentro del body de Excel Online — Connect para heredarla automáticamente.

Indica la hoja y el rango en notación A1 (A1:E10). Si no conoces el tamaño de los datos, obtén la dirección con Used range o lee la hoja entera con Read sheet.

Las dos formas de salida tratan los valores distinto:

  • Con has-headers = true (DataTable): todas las columnas son de texto; los números llegan como string con el separador decimal de la configuración regional del robot.
  • Sin encabezados (lista de filas): cada valor conserva su tipo — número, string o bool. Las celdas vacías son texto vacío ("") y las fechas, su número de serie de Excel (conviértelas con DateTime.FromOADate(...)).

Es solo lectura: no modifica el libro.

ParámetroTipoPor defectoDescripción
sheetstring—Nombre de la hoja.
rangestring—Rango en notación A1. Ej.: A1:E10.
ParámetroTipoPor defectoDescripción
sessionZoanExcelOnlineSession—Sesión de Excel Online — Connect. Dentro del body de Connect se hereda.
has-headersboolfalseSi es true, la primera fila del rango son encabezados y el resultado es un DataTable. Si es false, el resultado es una lista de filas.

Con has-headers = true devuelve un DataTable: una fila por fila del rango (sin la de encabezados), con las columnas nombradas como la primera fila. Recórrelo con un For each y accede por nombre de columna (fila["Cliente"]).

Sin encabezados, devuelve una lista de filas: cada fila es una lista de valores, en el orden de las columnas del rango. Accede por índices: datos[0][1] es la segunda columna de la primera fila. El número de filas está en datos.Count.

En ambos casos el tamaño corresponde al rango pedido, aunque tenga celdas vacías.

MensajeCausa y solución
No hay una sesión de Excel Online disponible. Indica 'session' desde una actividad excelonline-connect o coloca esta actividad dentro del cuerpo de la actividad Connect para que herede la sesión automáticamente.La actividad está fuera del body de Connect y no recibió session. Colócala dentro del body o pasa session = libro.
'sheet' es obligatorio. / 'range' es obligatorio.El parámetro está vacío o su expresión dio null.
itemNotFound (Microsoft Graph, 404)No existe una hoja con ese nombre. Revisa el nombre con Get sheet names.
InvalidArgument (Microsoft Graph, 400)La dirección del rango no es válida en notación A1.
A column named '…' already belongs to this DataTable.Con has-headers = true, la primera fila tiene dos encabezados iguales.
Excel Online — Connect credential = credential("m365-finanzas") path = "Reportes/Ventas.xlsx"
└─ body:
Excel Online — Read range sheet = "Ventas" range = "A1:D100" has-headers = true → output: tabla
For each fila in tabla
└─ Log message = fila["Cliente"]

Lectura sin encabezados, usando los valores por posición:

Excel Online — Read range sheet = "Resumen" range = "B2:C2" → output: totales
Log message = "Facturado: " + totales[0][0] + " · Pendiente: " + totales[0][1]