Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Import
Creator
Creator

Carga de archivos con diferentes nombres.

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

1 Solution

Accepted Solutions
hector_munoz
Specialist
Specialist

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:

 

FICHEROPESTAÑAVALOR
Hoja1.xlsxHoja11
Hoja1.xlsxHoja12
Hoja1.xlsxHoja13
Hoja2.xlsxHoja24
Hoja2.xlsxHoja25
Hoja2.xlsxHoja26
Hoja2.xlsxHoja27
Hoja3.xlsxHoja38
Hoja3.xlsxHoja39
Hoja3.xlsxHoja310
Hoja3.xlsxHoja311
Hoja3.xlsxHoja312

Espero que te sirva...

Saludos,

H

View solution in original post

6 Replies
aramirez
Contributor II
Contributor II

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

hector_munoz
Specialist
Specialist

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:

 

FICHEROPESTAÑAVALOR
Hoja1.xlsxHoja11
Hoja1.xlsxHoja12
Hoja1.xlsxHoja13
Hoja2.xlsxHoja24
Hoja2.xlsxHoja25
Hoja2.xlsxHoja26
Hoja2.xlsxHoja27
Hoja3.xlsxHoja38
Hoja3.xlsxHoja39
Hoja3.xlsxHoja310
Hoja3.xlsxHoja311
Hoja3.xlsxHoja312

Espero que te sirva...

Saludos,

H

sorrakis01
Specialist
Specialist

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

Import
Creator
Creator
Author

Gracias Hector.

Saludos

Import
Creator
Creator
Author

Gracias Alfredo por tu colaboración.

Saludos

Import
Creator
Creator
Author

Gracias Jordi por tu colaboración.

Saludos