目錄
TogglePython 讀取 Excel 教學總覽
Excel 是專案管理、數據分析與日常辦公不可或缺的工具。隨著自動化需求提升,利用 Python 讀取與處理 Excel 檔案已成為知識工作者與團隊領導的必備技能。Python 提供多種套件協助你高效讀取、分析、整合 Excel 資料,其中以 pandas 與 openpyxl 最為主流。
本教學將深入解析這兩大工具的適用情境、安裝步驟、進階用法與常見問題,並結合實務案例,協助你解決日常工作痛點,提升團隊協作效率。
產業應用情境
- 專案經理需合併多份進度報告,快速產出統計分析。
- 行政人員需自動讀取多個部門的 Excel 表單,彙整成統一格式。
- 數據分析師需批次處理大型 Excel 檔案,進行資料清洗與視覺化。
安裝與準備工作
安裝必要套件(pandas、openpyxl)
建議使用 Python 3.8 以上版本,確保相容性與效能。
安裝指令如下:
pip install pandas openpyxl
- pandas:適合大量資料分析、表格運算、快速讀取與寫入。
- openpyxl:適合需要操作 Excel 格式、樣式、公式,或需細緻控制單元格內容時。
如需處理舊版 .xls 格式,可考慮安裝 xlrd,但新版 pandas 已不再支援 .xls,建議將檔案轉為 .xlsx。
Excel 檔案格式支援說明
格式 | pandas 支援 | openpyxl 支援 | 備註 |
---|---|---|---|
.xlsx | ✔️ | ✔️ | 主流格式,建議優先使用 |
.xls | 部分支援 | ❌ | pandas 需額外安裝 xlrd |
.csv | ✔️ | ❌ | pandas 直接支援 |
建議: 若遇到格式錯誤,請先將檔案另存為 .xlsx。
使用 pandas 讀取 Excel
pandas 是資料分析的強大工具,能將 Excel 轉為 DataFrame,方便進行篩選、統計、合併等操作。
基本讀取與 DataFrame 操作
import pandas as pd
# 讀取 Excel 檔案
df = pd.read_excel('data.xlsx')
print(df.head()) # 顯示前五筆資料
常見參數說明:
– sheet_name
:指定工作表名稱或索引(預設讀取第一張)。
– header
:指定標題列(預設為第 0 列)。
– usecols
:指定讀取的欄位範圍。
– skiprows
:跳過前 n 列。
實務案例:
專案經理只需彙整「進度」與「負責人」兩欄,可這樣讀取:
df = pd.read_excel('project.xlsx', usecols=['進度', '負責人'])
選擇特定工作表與範圍
讀取指定工作表:
df = pd.read_excel('data.xlsx', sheet_name='部門A')
讀取多個工作表:
all_sheets = pd.read_excel('data.xlsx', sheet_name=None) # 回傳 dict,key 為工作表名
讀取特定列與欄:
df = pd.read_excel('data.xlsx', skiprows=2, usecols='B:D')
常見錯誤處理:
– 若遇到「ValueError: Excel file format cannot be determined」:請確認檔案副檔名與內容一致,並嘗試另存為 .xlsx。
– 若出現亂碼,可加上 encoding='utf-8'
,但 Excel 通常不需指定編碼,若仍有問題,請檢查原始檔案內容。
進階應用與常見問題
多檔案合併
情境: 每月有多份報表需合併分析。
import glob
files = glob.glob('reports/*.xlsx')
df_list = [pd.read_excel(f) for f in files]
merged_df = pd.concat(df_list, ignore_index=True)
缺失值處理
df.fillna(0, inplace=True) # 將缺失值補 0
讀取大型檔案效能建議
- 只讀取必要欄位與列(用 usecols、nrows)。
- 分批處理,避免一次載入全部資料。
中文亂碼處理
- pandas 讀取 Excel 通常不會亂碼,若遇到亂碼,多半是原始檔案儲存格式有誤,建議重新另存檔案。
使用 openpyxl 讀取 Excel
openpyxl 適合需要操作 Excel 格式、樣式、公式或需細緻控制單元格內容的場合,僅支援 .xlsx 格式。
基本讀取與儲存格操作
from openpyxl import load_workbook
wb = load_workbook('data.xlsx')
ws = wb.active # 取得預設工作表
print(ws['A1'].value) # 讀取 A1 儲存格內容
讀取指定工作表:
ws = wb['部門A']
讀取多個儲存格:
for row in ws['A1':'C3']:
for cell in row:
print(cell.value)
迭代資料與進階操作
逐行讀取所有資料:
for row in ws.iter_rows(values_only=True):
print(row)
處理合併儲存格:
- 讀取合併儲存格時,僅左上角儲存格有值,其餘為 None。
- 可用
ws.merged_cells.ranges
取得所有合併範圍。
讀取公式結果:
- openpyxl 讀取公式儲存格時,預設只會顯示公式本身,若需取得計算結果,需先在 Excel 另存檔案並儲存值。
pandas 與 openpyxl 選擇比較
需求情境 | pandas 適用 | openpyxl 適用 |
---|---|---|
大量資料分析 | ✔️ | ❌ |
需操作格式/樣式 | ❌ | ✔️ |
只需讀取表格內容 | ✔️ | ✔️ |
需讀寫公式/圖片 | ❌ | ✔️ |
支援 .xls 格式 | 部分支援 | ❌ |
實務建議:
– 資料分析、批次處理:優先選擇 pandas。
– 需控制格式、公式、合併儲存格:選擇 openpyxl。
常見問題(FAQ)
Q1:為什麼讀取 Excel 時出現格式錯誤或亂碼?
A:請確認檔案為 .xlsx 格式,若為 .xls 請另存為 .xlsx。亂碼通常與 Excel 檔案本身無關,若仍有問題,檢查原始資料是否含特殊字元。
Q2:如何讀取多個 Excel 檔案並合併?
A:可用 pandas 的 glob
與 concat
,詳見上方「多檔案合併」範例。
Q3:openpyxl 讀取合併儲存格時,為何部分儲存格為 None?
A:合併儲存格僅左上角有值,其餘儲存格會顯示為 None,需特別處理。
Q4:pandas 讀取 Excel 時遇到「ValueError: Excel file format cannot be determined」怎麼辦?
A:請確認檔案副檔名與實際格式一致,建議另存為 .xlsx 再讀取。
Q5:如何提升大型 Excel 檔案的讀取效能?
A:只讀取必要欄位與列,分批處理,或考慮將資料轉為 CSV 格式再處理。
結論與工具推薦
Python 讀取 Excel 不僅能大幅提升資料處理效率,更能協助專案管理、團隊協作與自動化日常工作。根據需求選擇 pandas 或 openpyxl,能讓你在不同場景下發揮最大效益。
若你希望進一步提升團隊協作效率,建議可結合 Monday.com、ClickUp、Notion 等現代化專案管理工具,將資料整合、任務追蹤與自動化流程無縫串接,打造高效數位辦公環境。