🧾懶人也能一次合併多個 Excel:從「雙擊就跳掉」到一鍵執行的完整指南(含程式碼範例)
為什麼你一雙擊 .py 視窗就「跳掉」?
很多人直接雙擊 Python 檔,結果視窗一閃而逝。常見原因是:
程式需要帶參數執行(例如「來源資料夾」「輸出檔名」),沒帶參數時程式就結束了。
解法很簡單:用命令列帶參數跑,或做一個 .bat 包裝,甚至改成互動式、一鍵 .exe。
下面我用「工程師講給完全不懂的人」的方式,帶你一步完成。文中的所有程式碼都是重新改寫過的範例,不含任何私人資訊。
你會學到什麼?
-
如何用 Python 把「一堆 Excel」合併成「一個 Excel,分多個工作表」。
-
3 種啟動方式:命令列、雙擊
.bat、雙擊.py(互動式)。 -
打包成
.exe,完全不需要使用者裝 Python。 -
常見錯誤與排查清單。
先安裝需要的工具(一次搞定)
開啟「命令提示字元(CMD)」或 PowerShell,安裝下列套件:
說人話版:
pandas是處理表格資料的超級工具。openpyxl讀.xlsx / .xlsm。xlrd讀.xls。pyxlsb讀.xlsb。
都裝起來就對了。
範例程式 1:命令列版本(專業又穩)
檔名建議:excel_gluer.py功能:把資料夾裡的 Excel 檔,每個檔做成一張工作表,且自動避開重名、非法字元。
如何執行(命令列)
小提醒:--src 與 --out 必填;--first-sheet 與 --only-sheet 擇一(或都不填,預設讀第一張)。
範例程式 2:互動式版本(雙擊 .py 也能用)
你想直接雙擊 .py 就跑?可以把下面這段「互動式入口」加在程式底部,沒帶參數時自動詢問並執行(此段與上面主程式邏輯相容、獨立可用)。
範例程式 3:一鍵 .bat 包裝(給不愛命令列的人)
檔名:run_glue.bat(雙擊即可)
-
chcp 65001:讓中文路徑/日誌不會亂碼。 -
pause:即使失敗也不會秒關,能看錯誤訊息。
想給使用者更省事?打包成 .exe
-
安裝打包工具:
-
在程式所在資料夾執行:
-
dist/excel_gluer.exe就會出現了。 -
有互動式入口時,雙擊
.exe也能跑;或你另外做 GUI 都行。
-
常見錯誤與排查清單
-
視窗一閃即關
-
沒帶參數:用命令列或
.bat、或加互動式入口。 -
用
.bat包住、結尾pause,至少看得到錯誤。
-
-
檔案讀不到/格式不支援
-
安裝對應引擎:
-
.xlsx / .xlsm→openpyxl -
.xls→xlrd -
.xlsb→pyxlsb
-
-
-
工作表名稱無效或重複
-
Excel 工作表限制 31 字元、不能有
[]:*?/\等字元。 -
範例程式已自動替換、截斷、並避免重名。
-
-
檔案被占用
-
確認 Excel 沒開著來源檔或輸出檔。
-
-
中文字亂碼
-
在
.bat開頭加chcp 65001。 -
日誌檔使用 UTF-8(程式已設定)。
-
進階需求怎麼做?
-
只合併符合檔名規則的檔案:加
--match "*.xlsx" -
只要來源檔的某張表:加
--only-sheet "Summary" -
處理後自動把來源檔移到封存夾:加
--archive "D:\archive" -
保留執行紀錄:加
--log "D:\logs\merge.log"
範例情境:三種啟動方式一次看懂
-
命令列(專業派)
-
雙擊
.bat(懶人派)
-
測一次成功後,天天雙擊就行。
-
雙擊
.py(互動式)
-
使用者不懂命令列?互動式入口會逐步詢問路徑與選項。
總結
-
問題本質:需要帶參數的 Python 腳本被「直接雙擊」,自然會跳掉。
-
三條路:命令列正確執行、
.bat包裝、一鍵互動式。 -
終極方案:打包成
.exe,發給同事即可用。
留言
張貼留言