Combine datos de diferentes libros de trabajo en formato de pilaHola expertos de JMP,
Estoy buscando una opción para agrupar los datos de diferentes libros de trabajo de Excel en un archivo JMP apilándolos bajo un encabezado.
Sugiera la mejor opción para importar los datos de varios libros de trabajo [Recuerde que no es una hoja de trabajo]
Por cierto, estoy usando JMP 15 pro, en Mac OS.
Gracias de antemano.
Re: Combinar datos de diferentes libros de trabajo en formato de pilaParece que la definición de la lista "theFiles" es incorrecta o no existe.¿Cuál es el valor de theFiles y cuál es el valor de la variable i?
Re: Combinar datos de diferentes libros de trabajo en formato de pilaProbé este script y obtuve el siguiente error. No estoy seguro de lo que pasó, me preguntaba si podrías ayudar. Gracias.

Re: Combinar datos de diferentes libros de trabajo en formato de pila- El script que proporcioné se basa en una lista JSL de libros de trabajo que se deben leer.Esa lista se llama theFiles.En mi secuencia de comandos, se crea leyendo todos los archivos .xlsx de una estructura de directorio/carpeta dada.Pero puede cambiar eso y simplemente crear manualmente esa lista.
theFiles = {"complete path to workbook 1", "complete path to workbook 2"
"complete path to workbook 3" };Un ejemplo inventado de lo que podría ser la "ruta completa al libro de trabajo n" es:"C:\Excel Data\2020\January\Department21 Monthly.xlsx"
Entonces, puede eliminar el código en las líneas 3-11 y reemplazarlo con su nueva definición de la lista "theFiles", y el script debería darle los resultados que está solicitando.
- La secuencia de comandos ya leerá todas las hojas de trabajo de cualquier libro que abra y las colocará en una sola tabla de datos JMP, que luego la secuencia de comandos agregará a la tabla de datos final general que está creando la secuencia de comandos.
- Debe trabajar en sus habilidades JMP JSL, para que pueda asumir la responsabilidad del uso y mantenimiento del script.O si eso no está dentro de la definición de su trabajo, entonces necesita encontrar el presupuesto para contratar a alguien para respaldar el código.Usar guiones que te acaban de pasar es algo muy cuestionable.JMP proporciona documentación, ejemplos y tutoriales gratuitos sobre el aprendizaje de JSL.Además, brindan clases de capacitación "por costo" en JSL.Los participantes de los debates comunitarios de JMP están allí para ayudar a resolver problemas, pero sería una decisión equivocada suponer que podrán escribir los guiones terminados que pueda necesitar.
- A continuación se muestra una modificación de mi secuencia de comandos original, colocando en ella el código de ejemplo para ingresar manualmente las rutas a los libros de trabajo que desea leer.
Names Default To Here( 1 );
theFiles = {"complete path to workbook 1", "complete path to workbook 2"
"complete path to workbook 3" };
// create the base data table that all other tables will be concatenated to
dtFinal = New Table( "All Data" );
// loop through all .xlsx files and concatenate them to dtFinal
// the Concatenate Worksheets(1) will result in a single data table
// for each workbook read in and that single data table will be concatenated
// to the dtFinal
For( i = 1, i <= N Items( theFiles ), i++,
dt = Open(
theFiles[i],
Use for all sheets( 1 ),
Concatenate Worksheets( 1 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
// concatenate the new table with the dtFinal table
dtFinal << concatenate( dt, append to first table( 1 ) );
// delete the no longer needed data table dt
Close( dt, nosave );
);Re: Combinar datos de diferentes libros de trabajo en formato de pilaGracias por la rápida respuesta, txnelson.
Pero, sinceramente, no soy bueno editando scripts .jsl. No sé cuáles son todos los pasos que tengo que editar en el script jsl compartido anterior.
En este momento, tengo "n" no. de tipo similar de libros de Excel en una sola carpeta. Cada libro de trabajo de Excel tiene varias hojas, pero mi enfoque es agrupar la información de la hoja de trabajo llamada "Datos" de todos los libros de trabajo.
asumiendo este escenario, ¿puede guiarme más para editar el script dado?
Además, si tiene alguna idea sobre el asistente "Importación de archivos múltiples", sugiéralo para el escenario dado. Puedo agrupar los datos de varios libros de trabajo, si los libros de trabajo individuales tienen solo una hoja de trabajo. Pero, no sé, cuál es el paso correcto a seguir para el escenario que he dado aquí [ie. si cada libro de trabajo tiene varias hojas de trabajo.]Re: Combinar datos de diferentes libros de trabajo en formato de pilaA continuación se muestra un ejemplo que debería darle una idea de cómo abordar este problema.Probablemente necesitará realizar cambios en él en función de los detalles de cuáles son sus estructuras reales.
Names Default To Here( 1 );
// get the workbooks to be processed
theFiles = Files in Directory(<YOUR path="">, recursive(1) );
// reduce the list to only .xlsx entries
For( i = N Items( theFiles ), i >= 1, i--,
If( Word( -1, theFiles[i], "." ) != "xlsx",
Remove From( theFiles, i, 1 )
)
);
// create the base data table that all other tables will be concatenated to
dtFinal = New Table( "All Data" );
// loop through all .xlsx files and concatenate them to dtFinal
// the Concatenate Worksheets(1) will result in a single data table
// for each workbook read in and that single data table will be concatenated
// to the dtFinal
For( i = 1, i <= N Items( theFiles ), i++,
dt = Open(
theFiles[i],
Use for all sheets( 1 ),
Concatenate Worksheets( 1 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
// concatenate the new table with the dtFinal table
dtFinal << concatenate( dt, append to first table( 1 ) );
// delete the no longer needed data table dt
Close( dt, nosave );
);</YOUR>