目錄
TogglePython 讀取 Excel 檔案教學總覽
Python 在專案管理、資料分析與自動化流程中,常被用來處理 Excel 檔案。無論是批次整理報表、資料清理,還是自動化產生分析結果,Python 都能大幅提升工作效率。常見應用場景包括:
- 自動化產出定期報表,減少人工複製貼上
 - 整合多份 Excel 資料,進行批次清理與統計
 - 將 Excel 資料轉換為其他格式(如 CSV、JSON)以便後續分析
 - 與其他辦公軟體(如 Google Sheets)協作資料流
 
為什麼用 Python 處理 Excel?
- 效率高:可自動化重複性資料處理工作
 - 彈性強:支援條件篩選、資料轉換、批次處理等進階操作
 - 易於整合:可與資料庫、API、雲端服務串接
 - 跨平台:適用於 Windows、macOS、Linux
 
常見 Excel 格式與支援情況
| 格式 | pandas 支援 | openpyxl 支援 | 備註 | 
|---|---|---|---|
| .xls | 是 | 否 | pandas 需 xlrd 支援 | 
| .xlsx | 是 | 是 | 最常見現代格式 | 
| .xlsm | 是 | 是 | 含巨集,巨集不可執行 | 
| .csv | 是 | 否 | pandas 直接支援 | 
| .ods | 是 | 否 | 開放文件格式 | 
實務建議:一般處理 .xlsx 檔案建議優先使用 pandas,若需操作 Excel 內部物件(如合併儲存格、公式、圖片),則選 openpyxl。
安裝與準備工作
必需套件介紹與安裝指令
- pandas:適合資料分析、批次處理、快速讀寫 Excel/CSV
 - openpyxl:適合操作 Excel 物件(如格式、公式、合併儲存格)
 
安裝指令如下:
pip install pandas openpyxl
如需處理 .xls 格式,請加裝 xlrd:
pip install xlrd
常見安裝問題與解決方式
- 權限不足:加上 
--user參數或用管理員權限執行 - 套件版本衝突:建議使用虛擬環境(如 venv、conda)管理
 - 無法安裝 xlrd:新版 xlrd 僅支援 .xls,讀 .xlsx 請用 openpyxl
 
使用 pandas 讀取與處理 Excel
pandas 適用情境與優缺點
- 適用情境:大量資料分析、批次處理、資料轉換、快速篩選
 - 優點:語法簡潔、效能佳、支援多格式、易與資料分析工具整合
 - 限制:不支援 Excel 進階格式(如合併儲存格、公式運算)
 
讀取 Excel 基本語法與範例
import pandas as pd
# 讀取 Excel 檔案
df = pd.read_excel('data.xlsx')
# 顯示前五筆資料
print(df.head())
指定工作表、列、行的操作技巧
- 指定工作表名稱或索引:
 
df = pd.read_excel('data.xlsx', sheet_name='報表A')
# 或
df = pd.read_excel('data.xlsx', sheet_name=0)
- 選取特定欄位與列:
 
# 取出「姓名」欄
names = df['姓名']
# 取出第0列
row0 = df.iloc[0]
讀取多個工作表與資料結構
dfs = pd.read_excel('data.xlsx', sheet_name=None)
print(dfs.keys())  # 顯示所有工作表名稱
print(dfs['報表A'].head())
進階應用:篩選、條件查詢、資料轉換
- 條件篩選:
 
# 只取分數大於80的資料
filtered = df[df['分數'] > 80]
- 資料轉換:
 
# 將 Excel 轉存為 CSV
df.to_csv('output.csv', index=False)
- 批次合併多個 Excel 檔案(常見於月報自動彙整):
 
import glob
all_files = glob.glob('reports/*.xlsx')
dfs = [pd.read_excel(f) for f in all_files]
merged = pd.concat(dfs, ignore_index=True)
常見錯誤與排解
| 錯誤訊息 | 原因 | 解決方式 | 
|---|---|---|
| FileNotFoundError | 檔案路徑錯誤 | 檢查檔案名稱與路徑 | 
| ValueError: Worksheet | 工作表名稱錯誤 | 確認 sheet_name 是否正確 | 
| UnicodeDecodeError | 檔案編碼不符 | 指定正確的 encoding 參數 | 
| ImportError: xlrd | 缺少 xlrd 套件 | 安裝 xlrd 或改用 openpyxl | 
| MemoryError | 檔案過大記憶體不足 | 分批讀取、只讀取部分欄位/列 | 
實務案例:某專案團隊每月需彙整多個部門 Excel 報表,利用 pandas 批次讀取與合併,大幅縮短人工整理時間。
使用 openpyxl 讀取與處理 Excel
openpyxl 適用情境與優缺點
- 適用情境:需操作 Excel 物件(如格式、合併儲存格、公式)、自動化產生格式化報表
 - 優點:可存取與修改 Excel 內部結構、支援儲存格格式與公式
 - 限制:不適合大量資料分析,操作語法較繁瑣
 
讀取 Excel 基本語法與範例
import openpyxl
# 載入 Excel 檔案
wb = openpyxl.load_workbook('data.xlsx')
# 取得預設工作表
ws = wb.active
# 讀取 A1 儲存格內容
print(ws['A1'].value)
遍歷/操作工作表、行、列
- 指定工作表:
 
ws = wb['報表A']
- 遍歷所有行與列:
 
for row in ws.iter_rows(min_row=2, values_only=True):
    print(row)
處理特殊資料(如合併儲存格、公式、圖片)
- 合併儲存格判斷:
 
for merged in ws.merged_cells.ranges:
    print(merged)
- 讀取公式結果與公式內容:
 
cell = ws['B2']
print(cell.value)        # 顯示公式結果
print(cell.data_type)    # 若為 'f' 表示含公式
- 圖片處理:openpyxl 可讀取圖片物件,但僅支援部分操作,若需批次處理建議搭配其他工具。
 
常見錯誤與排解
| 錯誤訊息 | 原因 | 解決方式 | 
|---|---|---|
| KeyError: ‘工作表名’ | 工作表名稱拼寫錯誤 | 檢查名稱或用 wb.sheetnames 查詢 | 
| BadZipFile | 檔案損毀或非 xlsx 格式 | 確認檔案格式或重新下載 | 
| AttributeError | 操作不存在的屬性 | 查閱 openpyxl 文件 | 
實務案例:財務部門需自動產出含合併儲存格與公式的月報,openpyxl 可直接編輯格式與內容,節省手動調整時間。
pandas 與 openpyxl 比較與選擇建議
功能、效能、適用場景比較
| 項目 | pandas | openpyxl | 
|---|---|---|
| 主要用途 | 資料分析、批次處理 | 操作 Excel 格式、物件 | 
| 支援格式 | xlsx, xls, csv, ods 等 | xlsx, xlsm | 
| 效能 | 優,適合大資料量 | 較慢,適合小型或格式化需求 | 
| 進階格式 | 不支援(如合併儲存格、公式) | 支援 | 
| 易用性 | 語法簡潔,適合分析 | 語法較繁瑣,適合格式處理 | 
實務選擇建議
- 資料分析、批次合併、快速篩選:建議用 pandas
 - 需保留或修改 Excel 格式、合併儲存格、公式:建議用 openpyxl
 - 兩者結合:先用 pandas 處理資料,再用 openpyxl 微調格式
 
常見問題(FAQ)
如何處理大檔案?
- pandas 可用 
usecols、nrows參數只讀取部分資料,減少記憶體消耗 - 可分批讀取多個檔案,或將資料轉存為 CSV 再處理
 
如何只讀取部分資料?
# 只讀取前100列
df = pd.read_excel('data.xlsx', nrows=100)
# 只讀取指定欄位
df = pd.read_excel('data.xlsx', usecols=['姓名', '分數'])
如何處理編碼或格式錯誤?
- 確認檔案格式與副檔名一致
 - 若遇編碼錯誤,pandas 讀取 CSV 時可指定 
encoding參數 - 若檔案損毀,建議重新取得檔案
 
其他常見疑問
- 合併儲存格如何處理? pandas 會自動展開為 NaN,openpyxl 可完整存取合併範圍
 - 如何將 Excel 轉為 JSON?
 
df.to_json('output.json', orient='records', force_ascii=False)
實務案例分享
自動化報表產生
某專案經理每週需彙整多部門進度,利用 pandas 批次讀取各部門 Excel,合併後自動產出統一格式的進度表,並用 openpyxl 加入標題與格式,減少人工作業。
批次資料清理
行銷團隊需清理來自不同地區的 Excel 客戶名單,透過 pandas 進行欄位標準化、重複資料移除,確保資料品質。
整合其他工具(如 Excel 與 Google Sheets 互轉)
利用 pandas 讀取 Excel 後,將資料轉存為 CSV,再匯入 Google Sheets,或搭配 Monday.com 等協作平台進行自動化流程串接,適合跨部門協作與專案追蹤。
總結與推薦工具
Python 讀取 Excel 檔案,無論是用 pandas 還是 openpyxl,都能大幅提升資料處理效率。選擇適合的工具,能讓你在專案管理、團隊協作或資料分析上事半功倍。若需進一步整合自動化流程、協作管理,建議可搭配 Monday.com 這類專案管理平台,將 Excel 資料串接進團隊工作流程,實現全方位的數位化管理。