Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola amigos,
una consulta es posible cargar todos las hojas de un excel con una sola sentencia load, tengo varios archivo excel por año el cual tiene 12 hojas, una hoja por mes, estas hojas comparten la misma estructura.
por favor si alguien tiene una idea de como hacer la cargar mediante una función u otro modo, por que son varios archivos y si hago un load por cada hoja estaría repitiendo código de forma innecesaria.
para cargar todos los excel ya encontré una forma, pero no se como cargar todos las hojas del excel
SET Carpeta = "xls";
FOR Each file in FileList('$(Carpeta)\*.xlsx')
LOAD Origen,
[S/T],
[Centro Origen],
[Almacen Origen],
[Centro Destino],
[Almacen Destino],
Transportista,
[Fecha Despacho],
Año,
Mes,
FROM $(file)
(ooxml, embedded labels, table is Operaciones);
NEXT file
Hola Christian
Este código con la función subfield te servirá para leer las hojas de un mismo libro de Excel. Ten en cuenta que el asterisco (*) no se puede usar en todas partes.
SET ThousandSep='.';
SET DecimalSep=',';
SET MoneyThousandSep='.';
SET MoneyDecimalSep=',';
SET MoneyFormat='#.##0,00 €;-#.##0,00 €';
SET TimeFormat='h:mm:ss';
SET DateFormat='DD/MM/YYYY';
SET TimestampFormat='DD/MM/YYYY h:mm:ss[.fff]';
SET MonthNames='ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic';
SET DayNames='lun;mar;mie;jue;vie;sáb;dom';
SET i = 0;
For i = 1 to 2
LET vMes= SubField(MonthNames,';',$(i));
Data:
LOAD Dato1,
Dato2
FROM
Libro1.xlsx
(ooxml, embedded labels, table is '$(vMes)-14');
Next i;
Saludos!
Hola Christian
Si todas las hojas de tu Excel tienen la misma estructura, y si por ejemplo cada hoja se llama semejante, algo como:
Hoja1
Hoja2
Hoja3
Puedes hacer algo como esto, para leer una a una las hojas, reemplazando en el el número de la hoja por la variable $(i),
SET i = 0;
For i = 1 to 3
Data:
LOAD Dato1,
Dato2
FROM
Libro1.xlsx
(ooxml, embedded labels, table is Hoja$(i));
Next i;
Saludos!
Hola Christian,
Si todas las hojas tienen una estructura de nombre similar podrías utilizar un asterisco:
//Ejemplo para excels que tengan un nombre que empiece por "compras".
LOAD
Producto,
Fecha,
Cantidad
FROM
compras*.xlsx
(ooxml, embedded labels, table is Hoja1); "
Si quieres cargar todos los excels de una ruta puedes utilizar *.xlsx en lugar de compras*.xlsx
Espero que te ayude!
Gracias por la respuesta Julian,
En mi caso las hojas tienen el siguiente formato Ene-14, Feb-14 y se van agregando mes a mes, hay alguna forma de usar un array para poder remplazar el contador por el nombre del mes que corresponde?
pensé usar
SET vMes='ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic';
SET i = 0;
For i = 1 to 3
Data:
LOAD Dato1,
Dato2
FROM
Libro1.xlsx
(ooxml, embedded labels, table is subfield($(vMes),';',$(1)));
Next i;
pero no me reconoce la sentecia subfield($(vMes),';',$(1))
gracias,
Gracias Jose,
una consulta es comodín * se puede usar en cualquier parte de la cadena? ejemplo
compras*.xlsx
*compras.xlsx
Sí, se puede utilizar como comodín tal y como explicas en tu ejemplo.
Hola Christian
Este código con la función subfield te servirá para leer las hojas de un mismo libro de Excel. Ten en cuenta que el asterisco (*) no se puede usar en todas partes.
SET ThousandSep='.';
SET DecimalSep=',';
SET MoneyThousandSep='.';
SET MoneyDecimalSep=',';
SET MoneyFormat='#.##0,00 €;-#.##0,00 €';
SET TimeFormat='h:mm:ss';
SET DateFormat='DD/MM/YYYY';
SET TimestampFormat='DD/MM/YYYY h:mm:ss[.fff]';
SET MonthNames='ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic';
SET DayNames='lun;mar;mie;jue;vie;sáb;dom';
SET i = 0;
For i = 1 to 2
LET vMes= SubField(MonthNames,';',$(i));
Data:
LOAD Dato1,
Dato2
FROM
Libro1.xlsx
(ooxml, embedded labels, table is '$(vMes)-14');
Next i;
Saludos!
Gracias Julian!!!!
funciono a la perfección.