在 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"} ));