Excel 多檔合併教學:用 xlwings 一次整合 10 份報表

更新 發佈閱讀 13 分鐘

連假回來,10 份 Excel 報表一次合併的實戰紀錄

連假回來,我發現累積了 10 天的報表需要處理。

問題很單純:

我該怎麼把 10 份格式完全相同的 Excel 報表,一次性抓到同一份 Excel 裡?

於是,我決定和 AI 協作完成這件事。

第一回合:我給 AI 的原始 Prompt

我一開始是這樣描述需求的:

我現在手邊有 10 份檔案,每份檔案我想要找分頁叫做「OOO銀行資料」,

但每頁我想要找第九列開始的資料,把它們都貼在同一份 Excel 裡面, 他們的表頭都相同,可以幫我用 Jupyter Notebook 完成嗎?

Gemini 回答:「沒問題!」

它給了我一套用 pandas + glob + os 遍歷資料夾、讀取分頁、合併 DataFrame 的腳本,理論上,非常合理。

然後我就掉進無限錯誤迴圈.....

錯誤訊息長這樣:

❌ 處理 OOO銀行資料_20260213.xlsx 時仍發生錯誤: expected <class 'float'>
❌ 處理 OOO銀行資料_20260214.xlsx 時仍發生錯誤: expected <class 'float'>
❌ 處理 OOO銀行資料_20260215.xlsx 時仍發生錯誤: expected <class 'float'>
...

AI 告訴我:

openpyxl 無法正確解析這些報表的資料型態,導致卡在 float 錯誤裡。

於是它建議換引擎:pyxlsb

再錯。

再換方法。

再錯。

我正式進入 「AI 很努力,但問題根本沒被解決」 的循環。

第 N 次錯誤後,我重新思考問題

我突然想到一件事:

把大象放進冰箱要幾個步驟?

我的任務其實是:

  1. 打開檔案
  2. 複製第二個工作表
  3. 貼到新的 Excel

而不是:

把 Excel 解析成完美 DataFrame 再進行數據結構轉換

我開始意識到——問題不是 AI 寫不出程式,問題是:我把「動作需求」錯誤轉換成了「資料分析需求」。

為什麼 pandas 一直出錯?

因為 pandas.read_excel() 的本質是:

👉 把 Excel 轉換成標準化的 DataFrame。

這意味著它會:

  • 嘗試推斷欄位型別(float、datetime、int)
  • 處理空白值
  • 解讀隱藏格式
  • 套用 Engine(openpyxl / calamine / pyxlsb)

但我的報表內部格式可能有:

  • 空白儲存格
  • 格式殘留
  • 錯誤的數字標籤
  • Excel 內部奇怪的 metadata

於是它一直報:

expected <class 'float'>

我甚至嘗試:

dtype=str

關鍵轉折:不要「讀資料」,改成「操作 Excel」

我後來搜尋到一個工具: xlwings

這個工具的邏輯完全不同,它不是去解讀 Excel 的底層格式,而是直接呼叫電腦裡的 Excel 軟體,並來操控Excel!所以我開始測試:

import xlwings as xw
workbook = xw.Book()

Excel 視窗真的跳出一個全新的excel!ヽ(≧∀≦)ノ
那一刻我知道——這條路對了。

技術理解整理:三種不同層級的工具

1. pandas 是「圖書館 (Library)」沒錯

在程式世界裡,pandas 被稱為 Library,可以把它想像成一座「數據處理自動化圖書館。這座圖書館不只藏書,它還提供一套標準化的作業流程(例如:怎麼借書、怎麼還書、怎麼把書裡面的資料填進表格)。

2. 核心任務:read_excel 出借工具的服務 (Function)

這是使用者走進圖書館最主要的目的,它的任務是:「把雜亂的原始檔案,轉化成整齊的圖書館標準格式(DataFrame)。」當我用python寫下:

read_excel()

其實是在下達一個複雜的綜合指令:

  • 辨識格式:確認這是一本 .xlsx、.xls 還是 .xlsb 的書。
  • 指派工人 (Engine):根據你的要求(或圖書館預設),指派 openpyxl / calamine / pyxlsb 去拆解書本。
  • 數位化錄入:將資料轉為 DataFrame!把拆解出來的資料,一列一列、一欄一欄地填進 pandas 那張著名的「超級大表格 (DataFrame)」裡。
  • 最終產出標準化資料型別:服務結束後,你手上就會拿到一份完全標準化、可以立刻進行加減乘除或繪圖的數據,而不需要再去管原始 Excel 長什麼樣子。

3. openpyxlpyxlsbCalamine 是「後勤轉檔機」

這些不是圖書館裡的普通工具,它們像是圖書館後勤室裡的「格式轉換引擎 (Engines)」,想像一下,Excel 檔案(.xlsx)就像是用一種加密方言寫成的古籍,圖書館員(pandas)看不懂。現在現在是圖書館後勤室有四位主要成員了:

vocus|新世代的創作平台

3-2. 特別介紹:xlwings —— 遠端遙控機器手臂

為什麼說 xlwings機器手臂

  • 它的原理:其他的引擎(如 Calamine)是直接去解讀檔案的二進制代碼;而 xlwings 則是打開電腦上裝的 Excel 程式,像有一隻隱形的雙手操作 Excel。
  • 優勢:若使用的Excel 檔案裡有複雜的 VBA 巨集特殊的公式,或者是那種需要「活生生」開著 Excel 才能抓到的數據,xlwings 就是唯一的救星。
  • 缺點:因為它必須啟動整個 Excel 軟體,所以它是所有方法中最慢、最耗資源的。

4. 總結任務流程,改用 xlwings:

  1. 將所有檔案放入同一資料夾
  2. 用程式打開每一個檔案
  3. 複製第二個工作表
  4. 貼到新的合併檔案
  5. 存檔

沒有解析 DataFrame、沒有處理型別推斷、沒有 dtype 戰爭。

單純複製,任務完成!

實際解決的流程

(1) 先安裝xlwing

pip install xlwings
vocus|新世代的創作平台

(2) 測試將資料試著跑跑看,打開一個新的excel檔案

#匯入 xlwings套件
import xlwings as wx
#讓 xlwings 開啟一個新的excel檔案
workbook = wx.Book()

(3)測試將資料試著跑跑看,打開一個既有的excel檔案

import xlwings as wx 
import os
# 定義檔案
file_path = r'C:\Users\c\Downloads\CCP-0213-22\OOOO明細_20260222.xlsx'
# 檢查檔案是否存在 (預防路徑打錯報錯)
if os.path.exists(file_path):
# 打開指定的 Excel 檔案
workbook = wx.Book(file_path)
print("檔案已成功開啟!")
else:
print("找不到檔案,請檢查路徑或檔名是否正確。")

(4)將資料全部放到同一個檔案夾內,盡量以英文命名資料夾 (中文會有全形半形的問題)

vocus|新世代的創作平台

(5)在VS code裡面使用下列的code

  • 右上角 1 按下去是運算,但按下去之前記得游標移動到 2 要先ctrl + s 存檔案 (存成.py)
  • 最後可以在 terminal 也就是3的地方看到有沒有在跑
vocus|新世代的創作平台


import xlwings as xw
import os

# 1. 設定路徑
folder_path = r'C:\Users\cynthia.hsu\Downloads\CCP-0213-22'
output_name = "全部日報合併檔.xlsx"
output_path = os.path.join(folder_path, output_name)

# 取得資料夾內所有檔案清單,過濾出 .xlsx 且排除 ~$ 開頭的暫存檔
all_files = [f for f in os.listdir(folder_path)
if f.endswith('.xlsx') and not f.startswith('~$') and f != output_name]

print(f"預計處理 {len(all_files)} 個檔案...")

# 2. 啟動 Excel
app = xw.App(visible=False, add_book=False)
app.display_alerts = False

try:
# 建立一個新的空白活頁簿作為容器
combined_wb = app.books.add()

for file_name in all_files:
file_path = os.path.join(folder_path, file_name)
print(f"正在提取: {file_name} ...")

try:
# 開啟原始檔
source_wb = app.books.open(file_path)

# 檢查是否有第二個工作表 (索引 1)
if len(source_wb.sheets) >= 2:
source_sheet = source_wb.sheets[1]

# 幫 Sheet 取個名字(取檔名的後 8 碼日期,避免重複)
new_name = file_name.replace(".xlsx", "")[-8:]

# 複製整張 Sheet 到新檔案的最前面
source_sheet.copy(before=combined_wb.sheets[0], name=f"明細_{new_name}")
print(f" --> ✅ 已成功加入 [明細_{new_name}]")
else:
print(f" --> ⚠️ 跳過:此檔案沒有第二個工作表")

source_wb.close()

except Exception as e:
print(f" --> ❌ 處理 {file_name} 時出錯: {e}")

# 3. 刪除新檔案建立時預設的 "Sheet1"
try:
if len(combined_wb.sheets) > 1:
combined_wb.sheets['Sheet1'].delete()
except:
pass

# 4. 儲存結果
combined_wb.save(output_path)
combined_wb.close()
print(f"\n--- 任務完成!共合併 {len(all_files)} 個檔案 ---")
print(f"儲存路徑: {output_path}")

except Exception as e:
print(f"發生嚴重錯誤: {e}")

finally:
app.quit()

這次我學到的「與 AI 協作」關鍵

❌ AI 不是問題拆解者
✅ 人類才是問題定義者

如果我把問題定義錯誤,AI 會非常努力地在錯誤方向優化,但卻永遠解不開問題,到不了終點....

當問題被定義錯誤,AI 只會在錯的方向上不斷優化....
看起來很努力,卻永遠到不了終點。

因為再強的模型,也救不了錯誤的框架,
工具只是放大器,人類才是方向盤。

與 AI 協作,真正重要的從來不是 Prompt 技巧,
而是——你是否看清楚問題的本質。

留言
avatar-img
拾光日誌|牧牧的沙龍
25會員
52內容數
living a vivid life wholeheartedly 讀萬卷書、行萬里路、見眾生、見自己
2025/11/02
在數據分析的世界裡,第一步往往不是模型或報表,而是如何整理那堆凌亂的 Excel。這篇文章分享我如何用 Power Query把重複的工作變成「一鍵完成」的流程,讓報表不再是苦差事,而是自動化的享受。
Thumbnail
2025/11/02
在數據分析的世界裡,第一步往往不是模型或報表,而是如何整理那堆凌亂的 Excel。這篇文章分享我如何用 Power Query把重複的工作變成「一鍵完成」的流程,讓報表不再是苦差事,而是自動化的享受。
Thumbnail
2025/10/15
不會寫程式也能自動化!教你用 Google Sheet 搭配 Google App Script,打造一鍵寄信與報表自動化流程。從需求收斂模板、指派按鈕到錯誤排除,完整教學讓你輕鬆召喚辦公小機器人,告別重複瑣事!
Thumbnail
2025/10/15
不會寫程式也能自動化!教你用 Google Sheet 搭配 Google App Script,打造一鍵寄信與報表自動化流程。從需求收斂模板、指派按鈕到錯誤排除,完整教學讓你輕鬆召喚辦公小機器人,告別重複瑣事!
Thumbnail
2025/07/08
分享利用 Google Apps Script 打造 Gmail 自動化監測工具,監控系統通知信件是否漏寄。透過簡單的腳本設置,即使是程式麻瓜也能輕鬆將動化記錄email資料至 Google Sheet。希望能讓更多人,即使是程式初學者,也能親身感受到 AI 與程式自動化所帶來的無限魅力與便利。
Thumbnail
2025/07/08
分享利用 Google Apps Script 打造 Gmail 自動化監測工具,監控系統通知信件是否漏寄。透過簡單的腳本設置,即使是程式麻瓜也能輕鬆將動化記錄email資料至 Google Sheet。希望能讓更多人,即使是程式初學者,也能親身感受到 AI 與程式自動化所帶來的無限魅力與便利。
Thumbnail
看更多
你可能也想看
Thumbnail
新的一年,我們都需要一些指引。這篇文章從奧修禪卡「時機成熟」牌卡出發,探討如何找到安定、自在與舒服的生活節奏。文章解析牌義,強調真正的富足來自內在的滿足與信任生命的歷程,而非外在的強求。透過五個「愛自己小練習」,引導讀者學會接納當下、溫柔對待自己,活出成熟、豐盛的人生。
Thumbnail
新的一年,我們都需要一些指引。這篇文章從奧修禪卡「時機成熟」牌卡出發,探討如何找到安定、自在與舒服的生活節奏。文章解析牌義,強調真正的富足來自內在的滿足與信任生命的歷程,而非外在的強求。透過五個「愛自己小練習」,引導讀者學會接納當下、溫柔對待自己,活出成熟、豐盛的人生。
Thumbnail
2026年終於來到了!!!今年跑去淡水看了跨年煙火來迎接2026,覺得真的很精彩,就特別來記錄一下~這場煙火是新北市的「閃耀新北 1314 跨河煙火」,每年跨年固定在淡水河一帶舉辦。今年是以淡江大橋為主軸,煙火同時在淡水、八里兩岸施放,所以不管站在哪一側,其實都看得到。
Thumbnail
2026年終於來到了!!!今年跑去淡水看了跨年煙火來迎接2026,覺得真的很精彩,就特別來記錄一下~這場煙火是新北市的「閃耀新北 1314 跨河煙火」,每年跨年固定在淡水河一帶舉辦。今年是以淡江大橋為主軸,煙火同時在淡水、八里兩岸施放,所以不管站在哪一側,其實都看得到。
Thumbnail
在新的一年,作者透過奧修禪卡「時機成熟」牌,獲得2026年的心靈指引。文章分享如何透過活在當下、累積能量與智慧,為自己創造安定、自在、舒服的生活。鼓勵讀者檢視自身成長,迎接豐盛的收穫,並分享《30day愛自己的小練習》為愛自己打下的基礎。
Thumbnail
在新的一年,作者透過奧修禪卡「時機成熟」牌,獲得2026年的心靈指引。文章分享如何透過活在當下、累積能量與智慧,為自己創造安定、自在、舒服的生活。鼓勵讀者檢視自身成長,迎接豐盛的收穫,並分享《30day愛自己的小練習》為愛自己打下的基礎。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
在2026年2月17日的水瓶座新月日蝕下,透過簡單的冥想與儀式,放下舊有循環,更新生命藍圖,並為未來的循環播下新的種子,啟動新的時間線。文章提供新月冥想引導、簡易儀式步驟、肯定語,並推薦使用的精油,以及結合玉清元始天尊聖誕的象徵意義。
Thumbnail
在2026年2月17日的水瓶座新月日蝕下,透過簡單的冥想與儀式,放下舊有循環,更新生命藍圖,並為未來的循環播下新的種子,啟動新的時間線。文章提供新月冥想引導、簡易儀式步驟、肯定語,並推薦使用的精油,以及結合玉清元始天尊聖誕的象徵意義。
Thumbnail
2026 丙午火馬年,是「真實之年」,一個高頻顯化與頻率塑造的關鍵年份。 因雙重火能疊加,能量傳導不再有延遲,而是“即刻反應”。 今年能量是一把不分青紅皂白的放大鏡,你發出什麼,就會被放大。 意圖來自小我:燃燒自我,或失控爆炸。 意圖來自靈魂:內在對齊,就升級顯化。
Thumbnail
2026 丙午火馬年,是「真實之年」,一個高頻顯化與頻率塑造的關鍵年份。 因雙重火能疊加,能量傳導不再有延遲,而是“即刻反應”。 今年能量是一把不分青紅皂白的放大鏡,你發出什麼,就會被放大。 意圖來自小我:燃燒自我,或失控爆炸。 意圖來自靈魂:內在對齊,就升級顯化。
Thumbnail
總是覺得自己無法完成計畫,感到無力又自責嗎?本文將引導你瞭解大腦的「網狀活化系統」與「心理一致性」概念,解析為何目標難以達成的原因,並提供一個全新的方法,從追求「結果」轉變為聚焦「身份」,幫助你找回內在動力,真正實踐願望,成為自己相信的人。
Thumbnail
總是覺得自己無法完成計畫,感到無力又自責嗎?本文將引導你瞭解大腦的「網狀活化系統」與「心理一致性」概念,解析為何目標難以達成的原因,並提供一個全新的方法,從追求「結果」轉變為聚焦「身份」,幫助你找回內在動力,真正實踐願望,成為自己相信的人。
Thumbnail
作者分享個人成長、療癒歷程,以及如何從2026年開始,以「Being in the Art Scene」為題,透過英文書寫記錄自己逐步走進藝術現場的過程。這是一個關於累積、感受、轉變與自我對話的系列,旨在探索作者如何從觀看者轉變為能理解與轉譯藝術的參與者。
Thumbnail
作者分享個人成長、療癒歷程,以及如何從2026年開始,以「Being in the Art Scene」為題,透過英文書寫記錄自己逐步走進藝術現場的過程。這是一個關於累積、感受、轉變與自我對話的系列,旨在探索作者如何從觀看者轉變為能理解與轉譯藝術的參與者。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
本文從摩根·豪瑟的觀點出發,探討「如何花錢」的藝術,而非僅關注「如何賺錢」。強調個人幸福標準的多樣性,以及理性消費、專注實用性、拒絕虛榮的重要性。文章也指出儲蓄能帶來時間掌控權和心理穩定,並鼓勵透過小額實驗來探索適合自己的花錢方式,最終發現利他與貢獻是獲得最高幸福感的途徑。
Thumbnail
本文從摩根·豪瑟的觀點出發,探討「如何花錢」的藝術,而非僅關注「如何賺錢」。強調個人幸福標準的多樣性,以及理性消費、專注實用性、拒絕虛榮的重要性。文章也指出儲蓄能帶來時間掌控權和心理穩定,並鼓勵透過小額實驗來探索適合自己的花錢方式,最終發現利他與貢獻是獲得最高幸福感的途徑。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News