¿Cómo puedo obtener una lista de hojas en un libro de Excel?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Tengo una situación en la que abro hojas de Excel usando Open Database().
Esta ha sido una buena manera de hacerlo ya que quiero columnas específicas de hojas específicas, por lo que usar una instrucción SQL SELECT es ideal.
Ahora estoy descubriendo que no hay estandarización en los nombres de las hojas. Entonces, lo que quiero hacer es consultar el libro de Excel y obtener una lista de hojas en él. Luego puedo usar algo de lógica en mi código para decidir cuáles quiero realmente (porque si bien no hay estandarización, hay suficientes "similitudes" para que pueda descubrir lo que quiero, al verificar si el nombre de la hoja contiene StringA o StringB o StringC por ejemplo)
No tengo idea de cómo se puede hacer esto en JSL. Al buscar en línea, hay muchos ejemplos de código que usan VBScripting, etc., que devolverán las hojas en un libro de Excel, pero eso no es de mucha ayuda.
También traté de encontrar alguna instrucción SQL que lo hiciera, pero no conozco un nombre de tabla que enumere las "tablas" / hojas en el libro de trabajo.
Sé que JMP puede hacerlo porque si uso Archivo -> Base de datos -> Abrir tabla y me conecto a una fuente de datos de Excel, aparecerá una lista de todas las hojas disponibles en la columna Esquemas - Tablas. Del mismo modo, si configuro una preferencia de usuario para seleccionar hojas de cálculo de Excel individuales y uso el comando Abrir(), me pedirá que seleccione qué hojas quiero abrir.
Entonces, mi pregunta es: ¿alguien sabe si JMP expone esa capacidad para descifrar los nombres de las hojas de Excel en el lenguaje de secuencias de comandos?
muchas gracias
Tomás
Re: ¿Cómo puedo obtener una lista de hojas en un libro de Excel?El último paso puede confundirlo si tiene tablas de datos abiertas antes de abrir las hojas de cálculo de Excel.La corrección rápida es
for(i=1, i <= nHojas, i++, dtname = Tabla de datos (i +contarantes ) << obtener nombre);
¿Cómo puedo obtener una lista de hojas en un libro de Excel?Tenga en cuenta que el fragmento de código anterior se corrigió.
Re: ¿Cómo puedo obtener una lista de hojas en un libro de Excel?Aquí hay una forma muy torpe que puede que ni siquiera sea factible si las tablas son muy grandes. Solo un fragmento...
1. Configure las preferencias para abrir todas las hojas de Excel en archivo>abrir.
2. contar antes = N Tabla ();
3. Abra el archivo de Excel usando open()
4. contarDespués = N Tabla();
5. nHojas = contar después - contar antes
5. dtnombre = {};
5. for(i=1, i <= nHojas, i++, dtname = Tabla de datos (i) << obtener nombre);
Luego, dtname es una lista de nombres de hojas con los que puede jugar y puede cerrar las tablas que no desea.
El mensaje fue editado por: mpb
Indexación corregida en el fragmento de código.
Re: ¿Cómo puedo obtener una lista de hojas en un libro de Excel?Este es un hilo antiguo, pero lo encontré útil. Aquí hay un script que hará esto abriendo el contenido del archivo XLSX directamente. Los archivos XLSX son simplemente archivos ZIP con una colección de archivos XML que definen las propiedades, la estructura y los elementos del libro de trabajo.
Names Default To Here( 1 );
filename = pick file("Choose Excel File", "$DOCUMENTS", {"Excel Files|xlsx"} );
zipxlsx = Open( filename, Zip );
zip_file = zipxlsx << read( "xl/workbook.xml", Format( blob ) );
// Open the file
zz = Open(
zip_file,
invisible,
xml,
XML Settings(
Stack( 0 ),
Row( "/workbook/sheets/sheet" ),
Col(
"/workbook/sheets/sheet/@name",
Column Name( "name" ),
Fill( "Use Once" ),
Type( "Character" ),
Format( {"Best"} ),
Modeling Type( "Nominal" )
)
)
);
worksheets=(zz:name << get values);
close(zz, nosave);
write(worksheets);Re: ¿Cómo puedo obtener una lista de hojas en un libro de Excel?
Re: ¿Cómo puedo obtener una lista de hojas en un libro de Excel?¿En serio? ¿Cómo no me había enterado de esto? Gracias, de todos modos, ¡me resultó muy útil!
Re: ¿Cómo puedo obtener una lista de hojas en un libro de Excel?¿Cómo es que no sabías nada de eso? Porque eres humano. Nadie puede saberlo todo sobre JMP y, luego, cada 18 meses aproximadamente, aparece una gran cantidad de nuevas características y funciones en una nueva versión. Personalmente, aprendo mucho de ti y de tus contribuciones sobre muchísimas cosas de JMP que no sé o que ya no recuerdo.