视频演示如何更新 JMP 数据表以反映 Excel 更新。由于 JMP 旨在供实际操作且通常不鼓励自动化,因此您返回 JMP 再次重新运行脚本。注意:当您在 JMP 中运行脚本时,它不会复制控制图脚本或您在表格面板中保存的任何其他脚本,因此您可能需要将其附加到源脚本中。更自动化的序列将涉及使用 JSL 编写脚本。
以下是一些脚本资源:
如果你想更新 JMP 数据表以反映 Excel 更新,请通过以下方式查看此愿望@vhuac :
https://community.jmp.com/t5/JMP-Wish-List/Join-Concat-and-Update/idc-p/556341/highlight/true#M2499
一些背景:
一个非常笼统的定义更新可能:
有一个 Jmp 数据表(包含许多设置和脚本、添加的列、合并的表等),并且其中一个源表中有一些新数据。
如何获取更新后的数据这jmp数据表?-即传输彩色块中的所有信息-同时保留灰色块中的数据。

-表格/更新非常接近我们想要的(蓝色和黄色区域) - 但绿色和橙色块将会丢失。
- 删除所有条目并表/连接可以解决此问题,但您将丢失从其他来源添加的任何其他数据(灰色区域)
中的一个附加按钮表格/更新命令应该完成这项工作: “追加附加行”
...或者对于启用“匹配列”的情况: “追加不匹配的行”
虽然我建议的这些选项不包括“更新”按钮,并且在不了解更多有关您的分析目标的情况下,这里有一些不包括编写 JSL 的潜在解决方案。您始终可以通过搜索来请求功能,给他们点赞,如果功能请求不存在,则在JMP 愿望清单。
一种方法是使用增强日志(如果您有版本 16 或更高版本)。 增强型日志将任务记录在日志顶部,并在下面写入 JSL。
另一种方法是使用工作流程生成器(如果您有版本 17),它使增强日志更进一步。 因此,如果问题是,您不想丢失任何脚本,或者您不想使用新数据再次重复分析,因为这三种方法都会创建一个新的数据表。 我建议使用可以导入数据、创建图表或分析的 Workflow Builder。它甚至可以将报告保存为 JPG、PDF 甚至 JMP Live。 因此,您可以执行所有 3 项操作:导入、创建报告和共享,所有操作都在工作流程生成器中完成。
下面是 JSL(我承认我是从 Workflow Builder 复制的),我在其中使用 Big Class 从 Excel 导入数据并创建了 . 如果更新 Excel 文件,新更新的数据将作为新数据表进入 JMP:
Names Default To Here( 1 );
//Import Excel file: Big Class.xlsx
Open(
"$DESKTOP/Big Class.xlsx",
Worksheets( "Big Class" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
//Report snapshot: Big Class - Graph Builder
Data Table( "Big Class" ) << Graph Builder(
Size( 522, 452 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ), Line Of Fit( X, Y, Legend( 5 ) ) )
);
//Save to image: $DESKTOP/Big Class - Graph Builder.pdf
Local( {obj},
obj = (Data Table( "Big Class" ) <<
Graph Builder(
Size( 522, 452 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ), Line Of Fit( X, Y, Legend( 5 ) ) )
)) << Report;
(obj << Get Picture( Type( "Scalable" ) )) <<
Save Image( "$DESKTOP/Big Class - Graph Builder.pdf", "PDF" );
obj << Close Window;
);
该脚本从 Excel 导入数据,创建图形生成器报告,然后将报告保存到 PDF 文件。每次运行脚本时,如果 Excel 文件更新为新数据,JMP 数据表、图形和 PDF 也会更新。
我刚刚找到这个帖子。 这个标题听起来非常有前途。
但作为@kmouloua指出,不幸的是,视频没有展示如何更新数据表。
作为附加@唐麦考马克的建议:
还可以使用 JMP 数据表作为 Jmp 查询生成器的源
...这样就可以得到一个可比的更新脚本(没有 64 位 Excel 和 64 位 Access 
该脚本中的一个微小更改将使其能够从新的数据表(即之前的数据表)读取数据。 @alisa_h_lowery通过重新运行源脚本生成)。
另一方面:
许多用户只会通过 Open 导入文件,而不会执行不必要的 Jmp 查询步骤 - 只是为了获得更新按钮。
对于这种情况,一个通用更新按钮仍然缺失。
因此,如果没有额外的 JSL 查询步骤:没有简单的方法更新 JMP 数据表以反映 Excel 更新?
@kmouloua这有点棘手,因为它要求你
- 拥有 64 位 Excel
- 拥有允许您连接到 64 位 Excel 作为数据库的 Microsoft Access 驱动程序。
- 拥有计算机的管理权限,允许您创建用户或系统 DSN 以将工作簿作为数据库连接。
如果您具备这三件事,则通过“打开数据库”选项打开 Excel 工作表将创建一个表脚本“从数据库更新”,该脚本将就地更新表。
你好,
我按照您视频中有关“如何更新 JMP 数据表以反映 Excel 更新”主题。
但是,不会更新现有表,而是创建一个包含更新数据的新表。 如何使主表在没有重复表的情况下进行更新,以便我被迫使用“表”菜单下可用的“更新表”功能?
谢谢
卡里姆