IniExcelAGrilla - IniExcelAGrilla

Resumen

INTRODUCCIÓN

IniExcelAGrilla carga datos desde un archivo Excel adjunto (contenido) y devuelve una grilla (matriz) para ser utilizada en un formulario. El tipo de cada columna se interpreta en base a una “Estructura” paramétrica, y se pueden elegir qué columnas retornar (S/N) manteniendo siempre la definición de todas las columnas.

 

 

INFORMACIÓN GENERAL

Nombre del servicio: IniExcelAGrilla

Clase: IniExcelAGrillaBean

JNDI: nodum/servicios/nucleo/ini/IniExcelAGrilla

Tipo: Inicialización

Módulo: General

Repetitivo: No

Detalle

PARÁMETROS DE ENTRADA

Parametro Literal
Estructura Definicion de columnas del Excel
FilasTitulo Cant Filas a ignorar por titulos solo se consideran las filas con datos
IdContenido Identificador de contenido de archivo Excel
MascaraFechas Mascara a aplicar a fechas
NumeroHoja Numero de Hoja con los datos

 

FORMATO DE SALIDA

Devuelve una matriz Object[][] donde cada fila corresponde a una fila “útil” del Excel (no vacía y posterior a FilasTitulo).

La cantidad de columnas en la salida es igual a la cantidad de campos marcados con S/N = 'S' en la Estructura. El orden de las columnas retornadas respeta el orden definido en la Estructura.

LÓGICA DEL SERVICIO

  1. El servicio recibe los datos necesarios para saber qué archivo Excel usar, qué hoja leer y cómo interpretar cada columna.
  2. A partir de esa información, toma el archivo Excel adjunto.

Aclaracion:

El archivo adjunto que se va a pasar como parametro debe tener el siguiente formato: ${@djunto#contentId()}

Como se observa el servicio usa un control de adjunto que debe estar definido en el formulario.

 

  1. Si no se adjuntó ningún archivo, no se cargan datos. Si se adjuntaron varios archivos, el servicio informa un error, ya que solo puede procesar uno.
  2. El servicio lee el Excel y prepara los datos para ser mostrados en una grilla.

Durante la lectura:

  • Se selecciona la hoja indicada.
  • Se ignoran las filas iniciales que corresponden a títulos o encabezados.
  • No se consideran filas completamente vacías.
  1. Cada columna del Excel se interpreta según lo definido:
  • Números, textos y fechas se cargan con el formato correspondiente.
  • Si un valor de texto es más largo de lo permitido, se ajusta automáticamente.
  1. Finalmente, se cargan en la grilla solo las columnas marcadas como visibles, respetando el orden configurado.

TIPOS DE DATOS PERMITIDOS EN LA ESTRUCTURA

En el parámetro Estructura se define cómo debe interpretarse cada columna del archivo Excel.
Cada columna se describe mediante una triple definición:

TipoDato ; Largo ; Retornar

Donde TipoDato indica cómo se leerá y convertirá el valor desde el Excel.

Tipo de dato   

Descripción funcional

Entero

Valores numéricos sin decimales (ej.: cantidades, números de documento).

Decimal

Valores numéricos con decimales (ej.: importes, precios, pesos).

Texto

Cadenas de texto (ej.: códigos, descripciones, observaciones).

Fecha

Fechas (ej.: fecha de emisión, vencimiento, movimiento).

Comportamiento por tipo de dato

Entero

Lee valores numéricos sin decimales.

Si la celda está vacía, se carga 0.

Si el Excel contiene texto, el valor se interpreta como 0.

Decimal

Lee valores numéricos con decimales.

Si la celda está vacía, se carga 0.

El separador decimal depende del formato del Excel.

Texto

Lee valores de texto.

Si la celda contiene un número, se convierte automáticamente a texto.

Si el contenido supera el largo definido, el texto se trunca.

Si la celda está vacía, se carga vacío.

Fecha

Lee fechas en formato nativo de Excel.

Si la celda no es fecha, intenta interpretar el valor como texto usando la Máscara de Fechas configurada.

Si no puede interpretar la fecha, el valor queda vacío.

 

OBSERVACIONES

La Estructura debe tener múltiplos de 3 elementos (Tipo;Largo;S o N). Si no, el servicio falla por “Estructura no válida”.

Debe definirse la estructura completa de columnas (aunque algunas no se retornen con S o N='N').

Las filas consideradas “vacías” se ignoran (todas sus celdas son BLANK).

Para FECHA: primero intenta leer fecha nativa; si falla, intenta parsear el string con MascaraFechas.

Para TEXTO: si viene como numérico, se transforma a string; si supera Largo, se trunca.

NumeroHoja comienza en 1 (Excel hoja 1 => numeroHoja=1).

 

EJEMPLO

Supongamos un Excel (Hoja 1) con 1 fila de título y estas columnas:

A: CodArt (texto), B: Cantidad (entero), C: Observación (texto), D: Fecha (fecha).

Parámetro

Valor

IdContenido

<ID del adjunto>

FilasTitulo

1

MascaraFechas

dd/MM/yyyy

Estructura

Texto;20;S;Entero;10;S;Texto;50;N;Fecha;10;S

NumeroHoja

1

 

Salida esperada: una grilla con 3 columnas (CodArt, Cantidad, Fecha) y tantas filas como registros no vacíos existan en el Excel.