如何把大 Excel 檔案拆成多個小檔案

xiaohuihui發表於2020-06-12

出於各種原因,有時我們要將一個大Excel拆成一些小檔案。這種演算法可以用VBA實現,但程式碼很非常難寫,還容易發生記憶體溢位。

用esProc就簡單多了,比如把大檔案拆成每1500行一個的小檔案,只有這麼幾行:


A B D
1 =file("dt.xlsx").xlsimport@t() /開啟Excel,假定第一行是標題
2 for A1.group((#-1)\1500)
/迴圈取數,每次1500行
3
=file(#A2/".xlsx").xlsexport(A2) /生成小Excel,檔名為迴圈數

有時還可能按列分組來拆分,比如Excel首行標題為col1、col2…,且已按col1排序(可以事先在Excel中排好),我們要根據col1拆分成多個Excel。程式碼也很簡單:


A B D
1 =file("dt.xlsx").xlsimport@t()
2 for A1.group(col1)
/按col1分組迴圈
3
=file(A2.col1/".xlsx").xlsexport@t(A2) /小檔名為分組名

把前面兩個要求合併起來也很簡單(即按col1分組,但子檔案最多1500行):


A B C D
1 =file("dt.xlsx").xlsimport@t()

2 for A1.group(col1)

/按col1分組迴圈
3
for A2.group((#-1)\1500)
/再每次迴圈取1500條
4

=file(B3.col1/#B3/".xlsx").xlsexport@t(B3) /小檔名為分組名+迴圈次數

esProc是個指令碼語言,可以在桌面IDE裡執行,資料以表格呈現,除錯這種帶迴圈的演算法很方便。

類似的Excel計算的例子(含超出記憶體的大Excel):

SPL 解析及匯出 Excel
excel 合併彙總

文字檔案和 Excel 在 esProc 裡處理方式相同,很多演算法可以互相參考:
SPL 結構化文字計算

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2697899/,如需轉載,請註明出處,否則將追究法律責任。

相關文章