将数据表脚本与来自多个文件的数据组合并保存到 JSL 文件中的脚本嘿大家!
好吧,尝试了很长时间之后,我仍然不知道如何让这段代码工作。我正在尝试编写一个脚本,该脚本允许用户从打开的文件列表中进行选择,对于选定的每个文件,代码将复制数据表脚本,然后将它们全部粘贴到一个 JSL 文件中,我可以在稍后运行该文件并再次打开所有数据表。基本上就像将一堆数据表打包到一个文件中(无需对它们进行 ZIP 压缩),这样更容易存储更复杂的分析。这段代码完成了我想要的大部分工作,但我无法将表脚本保存到 JSL 文件中,它们一直想要打开文件的副本。
Names Default To Here(1);
nw = new window("Trial",show menu(0),
vlistbox(
hlistbox(
panelbox("Open data tables",
lb = listbox(get data table list ());
),
panelbox("Data tables to save into one script file",
lb2 = listbox();
),
),
buttonbox("press to select tables",dtla=lb << Get Selected;lb2 << Append( dtla ); ),
buttonbox("press to remove tables",lb2 << Remove Selected(); ),
panelbox("what is the file name?",
teb1=Texteditbox();
),
buttonbox("press to save",
dtlb=lb2 << Get items;
fn=teb1 << Get Text();
list_of_table_scripts={};
For( i = 1, i <= N Items( dtlb ), i++,
y = datatable(dtlb[i]) << Get Script With Data Table();
insertinto(list_of_table_scripts,y);
);
Save Text File( "$desktop\"||fn||".jsl", y );
nw<< Close Window;
)
)
);
teb1<< Set Width( 200 );
谢谢您的指导!!
史蒂夫
自动化和脚本回复:将数据表脚本与来自多个文件的数据合并并保存到 JSL 文件中的脚本我不建议将数据表保存为脚本,除非它非常小,因为脚本的大小很快就会变得很大。但如果你真的想这样做,你可以使用类似这样的方法
Names Default To Here(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
tables = Get Data Table List() << get name;
tablescripts = {};
For Each({tablename}, tables,
s = DataTable(tablename) << Get Script;
Insert Into(tablescripts, Char(Name Expr(s)));
);
Save Text File("$DOWNLOADS/demo.jsl", Concat Items(tablescripts, ";"));
回复:将数据表脚本与来自多个文件的数据合并并保存到 JSL 文件中的脚本根据您以后使用这些表格的方式,您可以将表格收集到 JMP Project 或 zip 文件中(两者都可以使用 JSL 完成)。如果您选择这种方式,除非您希望使用 JMP Project 中的文件,否则您可能需要创建一个单独的表格加载脚本。我个人非常不喜欢 JMP Project 的实现方式,所以我倾向于避免使用它们,但我有时会使用它们来打包 JMP 文件以便存档。
回复:将数据表脚本与来自多个文件的数据合并并保存到 JSL 文件中的脚本谢谢@jthi !
把你的代码添加到我的代码里,效果很好!!谢谢你提醒我文件大小,我会留意的。
Names Default To Here(1);
nw = new window("Trial",show menu(0),
vlistbox(
hlistbox(
panelbox("Open data tables",
lb = listbox(get data table list ());
),
panelbox("Data tables to save into one script file",
lb2 = listbox();
),
),
buttonbox("press to select tables",dtla=lb << Get Selected;lb2 << Append( dtla ); ),
buttonbox("press to remove tables",lb2 << Remove Selected(); ),
panelbox("what is the file name?",
teb1=Texteditbox();
),
buttonbox("press to save",
dtlb=lb2 << Get items;
fn=teb1 << Get Text();
tablescripts = {};
For Each({tablename}, dtlb,
s = DataTable(tablename) << Get Script;
Insert Into(tablescripts, Char(Name Expr(s)));
);
Save Text File( "$desktop\"||fn||".jsl", Concat Items(tablescripts, ";") );
nw<< Close Window;
)
)
);
teb1<< Set Width( 200 );
回复:将数据表脚本与来自多个文件的数据合并并保存到 JSL 文件中的脚本@jthi ,保存到 ZIP 文件的 JSL 是什么?我在脚本索引里没看到什么。
回复:将数据表脚本与来自多个文件的数据合并并保存到 JSL 文件中的脚本我认为你必须暂时保存你的表格,以便可以将它们加载为 blob
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << Save("$TEMP\blob.jmp"); // save jmp table to load it as a blob
Close(dt, no save);
b = Load Text File("$TEMP\blob.jmp", blob);
za = Open("$TEMP\deleteMe.zip", zip);
za << Write("Big Class.jmp", b);
Delete File("$TEMP\blob.jmp");
这里可以添加相当多的改进。