Python 讀取 Excel 檔案教學:從入門到進階資料處理全攻略

本教學全面介紹 Python 讀取 Excel 檔案的實用技巧,涵蓋 pandas 與 openpyxl 的安裝、基本語法、進階應用、常見錯誤排解與實務案例,幫助你提升資料處理效率,精通 Excel 自動化與分析。

🧮 還在用 Excel 管理專案?試試這些更聰明的工具 🚀

從 Excel 升級到專業專案管理 × 自動化平台

還在用 Excel 追進度?monday.com 幫你把任務、時程、甘特圖、報表全部自動化! 支援 Excel 一鍵匯入,輕鬆轉換成更直覺的視覺化專案看板。 全球 22.5 萬家公司愛用,AI 輔助讓團隊溝通更順暢。
⭐ 最多人使用

從任務到 OKR,一站式專案與團隊協作平台

整合文件、OKR、任務與自動化流程,AI 助你更快完成工作。 也支援從 Excel 匯入專案資料。

輕鬆整理文件 × 規劃專案 × 建立資料庫

Notion AI 幫你自動生成 SOP、專案摘要與任務追蹤頁面。 從 Excel 匯入表格,打造你自己的工作空間。

Python 讀取 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 可用 usecolsnrows 參數只讀取部分資料,減少記憶體消耗
  • 可分批讀取多個檔案,或將資料轉存為 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 資料串接進團隊工作流程,實現全方位的數位化管理。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

✨ 讓專案管理變簡單,團隊更強大!

在專案推進的每一步,效率就是競爭力。monday.com 整合進度追蹤、團隊協作與資源分配,讓你隨時掌握全局、快速解決問題。
全球18萬家專業團隊已經採用,你還在等什麼?