Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buen día.
Tengo el siguiente inconveniente para cargar unos archivos de excel.
Tengo una historico de información de unos 200 archivos que estan en formato .xls, todos los archivos tienen como nombre la fecha a la que pertenecen. Usualmente usaría un asterisco (*) en los nombres para cargarlos todos, el lío es que el nombre de la pestaña de cada archivo es el mismo nombre del archivo, esto hace que no pueda colocar el (*) ya que me genera un error.
Si alguien me puede colaborar le agradezco mucho.
Saludos
Hola Juan,
Prueba el siguiente script:
// Se recorren los ficheros con extensión "xlsx" dentro del directorio dado en la
// variable 'vsDAT_DIR'
FOR EACH vsFichero IN FileList('$(vsDAT_DIR)\*.xlsx')
// Se obtiene el nombre del fichero sin extensión. Primer SubFiled()
// para quedarnos con el nombre fichero sin la ruta y el segundo
// para quedarnos con el nombre del fichero resultante sin la extensión
LET vsNombreFichero = SubField(SubField('$(vsFichero)', '\', -1), '.', 1);
// Cargamos el fichero de la iteración (ruta completa): FROM $(vsFichero)
// Con la pestaña igual a la variable 'vsNombreFichero'
// Además del campo VALOR añadimos el nombre del fichero (función FileName())
// y el nombre de la pestaña (variable 'vsNombreFichero')
LOAD FileName() AS FICHERO,
'$(vsNombreFichero)' AS PESTAÑA,
VALOR
FROM $(vsFichero) (ooxml, embedded labels, table is $(vsNombreFichero));
NEXT vsFichero
El resultado sería una tabla similar a esta:
FICHERO | PESTAÑA | VALOR |
Hoja1.xlsx | Hoja1 | 1 |
Hoja1.xlsx | Hoja1 | 2 |
Hoja1.xlsx | Hoja1 | 3 |
Hoja2.xlsx | Hoja2 | 4 |
Hoja2.xlsx | Hoja2 | 5 |
Hoja2.xlsx | Hoja2 | 6 |
Hoja2.xlsx | Hoja2 | 7 |
Hoja3.xlsx | Hoja3 | 8 |
Hoja3.xlsx | Hoja3 | 9 |
Hoja3.xlsx | Hoja3 | 10 |
Hoja3.xlsx | Hoja3 | 11 |
Hoja3.xlsx | Hoja3 | 12 |
Espero que te sirva...
Saludos,
H
Hola Juan,
Una pregunta, ¿los archivos xls tienen solamente una hoja?.
Si es así puedes leerlos sin necesidad de hacer referencia al nombre de la hoja, es decir, si los archivos solamente se componen de una hoja puedes intentar leerlos con un script similar a lo siguiente:
Datos:
LOAD *
FROM
[Ruta\*.xls]
(biff, embedded labels);
Un saludo,
Alfredo
Hola Juan,
Prueba el siguiente script:
// Se recorren los ficheros con extensión "xlsx" dentro del directorio dado en la
// variable 'vsDAT_DIR'
FOR EACH vsFichero IN FileList('$(vsDAT_DIR)\*.xlsx')
// Se obtiene el nombre del fichero sin extensión. Primer SubFiled()
// para quedarnos con el nombre fichero sin la ruta y el segundo
// para quedarnos con el nombre del fichero resultante sin la extensión
LET vsNombreFichero = SubField(SubField('$(vsFichero)', '\', -1), '.', 1);
// Cargamos el fichero de la iteración (ruta completa): FROM $(vsFichero)
// Con la pestaña igual a la variable 'vsNombreFichero'
// Además del campo VALOR añadimos el nombre del fichero (función FileName())
// y el nombre de la pestaña (variable 'vsNombreFichero')
LOAD FileName() AS FICHERO,
'$(vsNombreFichero)' AS PESTAÑA,
VALOR
FROM $(vsFichero) (ooxml, embedded labels, table is $(vsNombreFichero));
NEXT vsFichero
El resultado sería una tabla similar a esta:
FICHERO | PESTAÑA | VALOR |
Hoja1.xlsx | Hoja1 | 1 |
Hoja1.xlsx | Hoja1 | 2 |
Hoja1.xlsx | Hoja1 | 3 |
Hoja2.xlsx | Hoja2 | 4 |
Hoja2.xlsx | Hoja2 | 5 |
Hoja2.xlsx | Hoja2 | 6 |
Hoja2.xlsx | Hoja2 | 7 |
Hoja3.xlsx | Hoja3 | 8 |
Hoja3.xlsx | Hoja3 | 9 |
Hoja3.xlsx | Hoja3 | 10 |
Hoja3.xlsx | Hoja3 | 11 |
Hoja3.xlsx | Hoja3 | 12 |
Espero que te sirva...
Saludos,
H
Hola Juan,
Asi a modo rápido.
Usa la función Filename(). Esto te devolverá el nombre del fichero que estas leyendo.
Lo igualas a la variable vNombreFichero = Filename()
Cuando generes el FROM pon la ruta /xxxx/xxxxx/xxxxx/$(vNombreFichero) y cuando te pida la pesatña pones (ooxml, no labels, table is $(vNombreFichero));
Saludos
Gracias Hector.
Saludos
Gracias Alfredo por tu colaboración.
Saludos
Gracias Jordi por tu colaboración.
Saludos