我有一個腳本,可將測量文件從Excel導入到組合文件中,然後將文件ID的一部分拉到“部件ID”列中,然後該列必須引用帶有“代碼鍵”的表,該文件將文件ID與實際零件ID。
Excel文件具有三個工作表,其中只有一個對數據有用。 導入很容易。
我想直接獲取位於第一個工作表上單元格D7中的* real *零件ID。
有沒有一種方法可以從不確定數目的文件中的每一個中獲取此值,並將其存儲在數組或其他變量中,然後將其轉儲到主文件中?
您可以將Microsoft Excel工作簿視為關係數據庫。這樣,您可以使用SQL為所需的值指定查詢。您可以交互地執行整個過程以確保它可以正常工作,然後生成的數據表將包含帶有所需JSL的Source table腳本。
開始這裡有關完整的說明和示例,請參見JMP在線文檔。
@ andersonmj2 ,
如果您沒有設置ODBC,也沒有設置系統文件,則可能會有一點學習困難,尤其是如果您的PC上安裝了32位Office。
標記, @markbailey 從JMP 13和早期的JMP14開始,Microsoft Office使用SYSWOW的指令不是很可靠。這些說明適用於某些PC,不適用於其他PC。 自從早期JMP 14以來,JMP做了一些事情來設置DBase,Text和Excel ODBC嗎?如果是,我很感興趣。如果不是這樣,則為JSL Companion編寫了PDF,其中包含似乎可靠的詳細說明,但其中包含多個步驟。我認為值得付出努力來使用SQL查詢不同的文件類型。
因此,以下腳本將演示使用JMP Excel嚮導的替代方法。不能保證性能。 該腳本向JSL forr顯示了一個文件,該腳本必須創建一個循環以尋址所有文件。
查看結果日誌 cid =“ 70.gg.7”;
請注意,由於Excel列標題(A,B,...)表示1行,因此使用第8個值。
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);