多年來,我一直使用 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 的記憶體才能運行,但對於大量文件或更大的文件,我當然建議使用更大的記憶體。
布萊恩