在 JMP 腳本中打開特定的 XLS 工作簿<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我有一個 XLS (BigData.xls),其中包含名為“美國”、“加拿大”和“愛爾蘭”的工作簿選項卡。
我有一個只需要打開/閱讀加拿大選項卡的腳本。是否有 JMP 腳本命令來執行此操作?我試圖避免使用手動對話框拉入“加拿大”選項卡。
謝謝!
回复:在 JMP 腳本中打開特定的 XLS 工作簿戴夫,一如既往地感謝。 我將藉用其中的一些代碼,以在我們內部擁有的 v10 變體中獲得一致的性能。
回复:在 JMP 腳本中打開特定的 XLS 工作簿我過去使用的一種粗略(但有效)的方法是不可見地打開整個工作簿,然後關閉我不想要的那些。檢查打開之後出現的表格與之前打開的表格,這會為您提供電子表格中工作簿的名稱。
正如您所注意到的,用戶偏好可能會導致問題 - 這裡是一種代碼模式,用於檢測偏好,將其設置為您需要的,然後恢復它:
// preference to check
searchPref = "Excel Has labels";
// check the preference
prefs = Char( Get Preferences() );
p = Pat Match( prefs, searchPref + "(" + Pat Arb() >> strResult + ")" );
If ( p == 0,
Write( "!NFailed to find value for " || searchPref )
,
result = Parse( strResult );
Show( result );
);
// set it to what you want
Set Preferences(Excel Has Labels(2));
// do your stuff
Open(nsSFEPM:pathMDSS, invisible)
// restore the user preference
Eval(Parse(Eval Insert("\[
Set Preferences(Excel Has Labels(^result^));
]\")));
-戴夫
回复:在 JMP 腳本中打開特定的 XLS 工作簿我剛剛在代碼中嘗試過這個,並讓一位用戶也對其進行了測試。 我發現用戶的偏好優先於函數的參數。 在 JSL 中,我指定要打開哪個工作表,但是如果用戶的首選項是提示,那麼他們會得到提示! 這似乎與函數的使用有悖常理……
[編輯] 我的用戶有 10.0.0 並且首選項是覆蓋代碼。 我的機器有 10.0.2,代碼贏得了偏好。 當然,我在“10.0.x 版的新增功能”文檔中根本沒有看到任何關於此功能的信息......
回复:在 JMP 腳本中打開特定的 XLS 工作簿我今天才發現這個(打開命令的工作表選項),這非常有幫助。 但是,它沒有出現在應用程序的幫助頁面中,這會更有幫助!
回复:在 JMP 腳本中打開特定的 XLS 工作簿雖然較早的討論有所幫助,但語法不正確。工作表的名稱必須用方括號括起來,並且必須在工作表名稱的末尾添加 $。所以,如果我的電子表格有名為 demo 的工作表,則正確的語法是:
FullyQualifiedFile = "c:\$user\ResearchData\FY2012.xls";
ODB_String = "DSN=Excel Files;DBQ=" || FullyQualifiedFile;
dt = Open Database(ODB_String,"SELECT * FROM [demo$]");
回复:在 JMP 腳本中打開特定的 XLS 工作簿如果使用 Open Database() 而不是 Open(),則可以在 SQL 字符串中指定單個工作表。
查看這個較舊的討論:
回复:在 JMP 腳本中打開特定的 XLS 工作簿JMP 8.0.1
任何建議的解決方法?
回复:在 JMP 腳本中打開特定的 XLS 工作簿抱歉,我應該指定這個選項是在 JMP 10 中添加的。
您使用的是 JMP 10 還是更早版本?
-傑夫
回复:在 JMP 腳本中打開特定的 XLS 工作簿沒用。當我指定時,所有工作表都打開了工作表(“小”)或工作表({“小”})
回复:在 JMP 腳本中打開特定的 XLS 工作簿您可以使用 Worksheets() 關鍵字:
open("C:\data\cars.xlsx", Worksheets("small"));
通過在括號中包含工作表名稱來導入多個工作表:
open("C:\data\cars.xlsx", Worksheets( {"small", "medium", "large"} ));