多年来,我一直使用 JMP 脚本循环导入大量 Excel 文件。自从更新到 JMP 18 后,这个脚本的执行时间比以前长了 4 到 5 倍。以前打开 100 个文件大概需要 5 分钟,现在却要 20 分钟以上。我的脚本没有任何变化。
这是使用的典型语法:
// Open up Sum_LP sheet and copy contents to JMP table called summary
dt = Open(
::fullfile,
Worksheets(Sheetname),
Use for all sheets(0),
Concatenate Worksheets(0),
Create Concatenation Column(0),
Worksheet Settings(
1,
Has Column Headers(0),
Number of Rows in Headers(0),
Headers Start on Row(0),
Data Starts on Row(5),
Data Starts on Column(1),
Data Ends on Row(54),
Data Ends on Column(120),
Replicated Spanned Rows(1),
Replicated Spanned Headers(0),
Suppress Hidden Rows(1),
Suppress Hidden Columns(1),
Suppress Empty Columns(0),
Treat as Hierarchy(0),
Multiple Series Stack(0),
Import Cell Colors(0),
Limit Column Detect(0),
Column Separator String("-")
),
Invisible
); Edit (jthi): added jsl formatting
由于每天都要用到很多次,所以效率至关重要。有人能帮我解释一下为什么它现在这么慢吗?
这可能与JMP 注释 655981 有关 - JMP® 18 中 Microsoft Excel 文件导入的变更。另外,您的 Excel 文件中是否有合并单元格?它们至少以前会导致 Excel 导入速度变慢?
@briancorcoran
你好,jthi,
感谢您提供的注释链接,我之前没有看到过。
Excel 表格真的非常简洁——有些单元格有填充颜色,但没有合并单元格。我可能会尝试一下表格的格式,看看会有什么效果。
不 - 这是 JMP 18 处理 Excel 表的根本问题,因为即使使用最简单的 Excel 表,时间也会显著增加。
我深深感受到JMP 18的数据拼接速度远不如JMP 14
你好,
正如 Jarmo 指出的,合并单元格存在问题,但已在 JMP 18.2 中修复。我们在 JMP 内部运行的计时通常显示导入速度比 JMP 17 更快,尽管它会消耗更多内存。如果您的机器内存有限(例如 < 16 GB),这可能是一个问题。否则,这可能是您工作表特有的问题。我们不能接受真实数据,但如果您能提供匿名工作表或能够复现该问题的虚假数据,我们将非常感谢您将其提交给 JMP 技术支持 ( support@jmp.com ) 供我们审核。
谢谢你,
布莱恩·科克伦
JMP开发
运行这些脚本的机器通常配置 8GB RAM,所以这很可能是根本原因。然而,在 JMP 17 及以下版本中,这并不是问题。
我不认为 JMP 17 推荐的 RAM 从 4GB 发生了变化?
我刚刚尝试在 32GB RAM 的开发机器上运行脚本,但与 JMP 17 相比仍然慢得多。
我将通过一些虚假数据联系所提供的电子邮件地址。
没错,JMP 需要 4 GB 的内存才能运行。但是,内存越大越好,因为它所有操作都在内存中完成。具体到 Excel 导入,JMP 18 使用的新底层库占用的内存更多。没错,JMP 需要 4 GB 的内存才能运行,但对于大量文件或更大的文件,我当然建议使用更大的内存。
布莱恩