Tengo un script que importa archivos de medición de Excel a un archivo combinado y luego extrae parte del ID del archivo en una columna de 'ID de pieza', que luego tiene que hacer referencia a una tabla con una 'clave de código' que relaciona el ID de archivo con el real ID de pieza.
El archivo de Excel tiene tres hojas de trabajo, solo una que es útil en términos de datos. Importar eso es fácil.
Me gustaría tomar directamente el ID de pieza * real *, que se encuentra en la celda D7 en la primera hoja de trabajo.
¿Hay alguna manera de tomar este valor de cada uno de un número indeterminado de archivos y almacenarlo en una matriz u otra variable y luego volcarlo en el archivo principal?
Puede tratar un libro de trabajo de Microsoft Excel como una base de datos relacional. De esta manera, puede usar SQL para especificar una consulta para el valor que desea. Puede realizar de forma interactiva todo el proceso para asegurarse de que funciona, y luego la tabla de datos resultante tendrá un script de tabla de origen con el JSL que necesita.
comienzo aquí en la documentación en línea de JMP para obtener instrucciones completas y ejemplos.
@ andersonmj2 ,
Si no tiene ODBC configurado, los archivos del sistema configurados, puede haber una pequeña curva de aprendizaje, especialmente si tiene Office de 32 bits instalado en su PC.
Marca, @markbailey , a partir de JMP 13 y principios de JMP14, las instrucciones de Microsoft Office para usar SYSWOW no eran muy confiables; las instrucciones funcionarían para algunas PC y no para otras. ¿Ha hecho algo JMP desde principios de JMP 14 para configurar DBase y Text y Excel ODBC? Si es así, estoy interesado. De lo contrario, se escribió un PDF para JSL Companion con instrucciones detalladas que parecen ser confiables, pero consta de varios pasos. Creo que vale la pena el esfuerzo de configuración para poder consultar diferentes tipos de archivos usando SQL.
Entonces, el siguiente script es para demostrar una alternativa usando el Asistente de Excel de JMP. No hay garantía de rendimiento. Este script muestra el JSL para un archivo, el script tendría que crear un bucle para abordar todos los archivos.
Consulte el registro para ver el resultado cid = "70.gg.7";
Tenga en cuenta que el octavo valor se utiliza ya que los encabezados de columna de Excel (A, B, ...) representan 1 fila.
Names Default to Here(1);
//create Excel workbook
dt1_1 = New Table("Dummy",
New Column("A", Character, Values({"red", "white", "green", "blue", "yellow", "orange", "black", "magenta"})),
New Column("B", Numeric, Values({1,2,3,4,5,6,7,8})),
New Column("C", Numeric, Values({10,20,30,40,50,60,70,80})),
New Column("D", Character, Values({"10.aa1","20.bb.2", "30.cc.3", "40.dd.4", "50.ee.5","60.ff.6", "70.gg.7","80.hh.8"})),
New Column("E", Numeric, Values({101,102,103,104,105,106,107,108}))
);
wait(0);
dt1_2 = Open("$sample_data/Big Class.jmp");
dt1_3 = Open("$sample_data/Iris.jmp");
Create Excel Workbook("c:/temp/Test_GetExcelValue.xlsx", {"Dummy", "Big Class", "Iris"}, {"Sheet1", "Sheet2", "Sheet3"});
wait(0);
Close(dt1_1,Nosave);
Close(dt1_2,Nosave);
Close(dt1_3,Nosave);
//========================================================================
xl_dt3 = Open( "c:/temp/Test_GetExcelValue.xlsx", Invisible,
Worksheets("Sheet1"),
Worksheet Settings(1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 8 ),
Data Starts on Column( 4 ),
Data Ends on Row(8), //0 >> not set, read to end of rows
Data Ends on Column(4), //0 >> not set, read to end of cols
)
);
cid = xl_dt3[1,1];
close(xl_dt3,NoSave);
show(cid);