Openpyxl 讀取 Excel 教學:完整步驟、實用技巧與常見問題解析

本教學全面介紹 openpyxl 讀取 Excel 的方法,從安裝、基本流程到進階應用與常見疑難解答,並結合實務案例,幫助專案經理、知識工作者輕鬆掌握 Excel 自動化技巧。

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

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

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

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

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

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

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

什麼是 openpyxl?適用場景與工具比較

openpyxl 是一套專為 Python 開發者設計的 Excel 處理函式庫,能讀取、寫入 .xlsx、.xlsm、.xltx、.xltm 等現代 Excel 格式(不支援舊版 .xls)。它特別適合需要自動化報表、資料分析、批次處理或整合 Excel 資料至其他系統的場景。
與其他常見工具比較:

工具 支援格式 主要用途 優點 適用情境
openpyxl xlsx, xlsm 讀寫 Excel 支援格式豐富、操作彈性高 自動化、批次處理、格式控制
pandas xlsx, csv等 資料分析 讀取速度快、資料處理強大 資料分析、資料清洗
xlrd xls, xlsx(舊) 只讀 Excel 輕量、簡單 只需讀取舊版 Excel

常見限制
– openpyxl 不支援舊版 .xls 格式。
– 公式僅能讀取字串,無法計算結果。
– 巨集(VBA)無法操作。

產業應用情境
專案管理:自動彙整進度表、產出週報。
– 財務會計:批次讀取多份報表、資料整合。
– 行政庶務:自動化表單資料匯入、批次審核。


openpyxl 安裝與環境需求

安裝步驟

在命令列執行以下指令即可安裝最新版 openpyxl:

pip install openpyxl

版本建議
建議搭配 Python 3.7 以上版本,確保相容性與效能。

常見安裝問題與解決

  • 找不到 pip:請確認 Python 已正確安裝,並將 pip 加入環境變數。
  • 權限不足:加上 --user 參數或以管理員身份執行。
  • 版本衝突:可先執行 pip uninstall openpyxl 再重新安裝。

openpyxl 讀取 Excel 基本流程

載入 Excel 檔案

使用 load_workbook 載入檔案:

from openpyxl import load_workbook

file_path = 'example.xlsx'
wb = load_workbook(file_path)

常用參數說明

參數 說明 範例
read_only 只讀模式,提升大型檔案讀取效能 load_workbook(file_path, read_only=True)
data_only 只讀取公式結果,不讀公式字串 load_workbook(file_path, data_only=True)
keep_vba 保留巨集內容(僅 xlsm 有效) load_workbook(file_path, keep_vba=True)

異常處理實例

try:
    wb = load_workbook(file_path)
except FileNotFoundError:
    print("找不到檔案,請確認路徑。")
except Exception as e:
    print(f"讀取失敗:{e}")

選擇與操作工作表

取得所有工作表名稱

sheet_names = wb.sheetnames
print(sheet_names)

選擇特定工作表

sheet = wb['Sheet1']  # 以名稱選擇
# 或
sheet = wb.active     # 取得預設工作表

產業應用情境
如需批次處理多個工作表(如月報、部門分頁),可用迴圈依序讀取。

讀取單元格資料

以座標或索引讀取

value_a1 = sheet['A1'].value
value_b2 = sheet.cell(row=2, column=2).value

資料型態與空值處理

  • openpyxl 會自動判斷型態(數字、文字、日期等)。
  • 空白儲存格會回傳 None

範例:判斷資料型態與處理空值

cell = sheet['A1']
if cell.value is None:
    print("此格為空")
elif isinstance(cell.value, int):
    print("數字:", cell.value)
elif isinstance(cell.value, str):
    print("文字:", cell.value)

讀取格式化內容

openpyxl 主要取得原始值,若需取得顯示格式(如千分位、日期格式),可參考 cell.number_format 屬性。


進階讀取技巧

迭代與範圍讀取

使用 iter_rows/iter_cols

可高效讀取大量資料,並可指定範圍:

for row in sheet.iter_rows(min_row=2, max_row=10, min_col=1, max_col=3):
    for cell in row:
        print(cell.value)
參數 說明
min_row 起始列
max_row 結束列
min_col 起始欄
max_col 結束欄

效率建議
– 只需部分資料時,務必設定範圍,避免全表讀取影響效能。

使用座標範圍

for row in sheet['A1:C5']:
    for cell in row:
        print(cell.value)

適合小範圍快速存取,若需大量資料建議用 iter_rows。

讀取合併儲存格、公式、格式化

合併儲存格

合併儲存格僅左上角有值,其餘為 None:

cell = sheet['B2']
if cell.coordinate in sheet.merged_cells:
    print("此格為合併儲存格")

讀取公式與結果

  • 預設讀取公式字串(如 =SUM(A1:A5))。
  • 若需讀取公式計算後的值,需以 data_only=True 載入:
wb = load_workbook(file_path, data_only=True)

注意
若 Excel 檔案未經 Excel 軟體重新儲存,公式結果可能為 None。

取得格式化資訊

可讀取單元格格式:

cell = sheet['A1']
print(cell.number_format)  # 例如 'yyyy-mm-dd'

只讀模式與大型檔案處理

只讀模式(read_only)

適用於大型檔案,減少記憶體消耗:

wb = load_workbook(file_path, read_only=True)

限制
只讀模式下無法修改資料、部分屬性不可用。

效能優化建議

  • 只讀模式搭配 iter_rows 讀取,效能最佳。
  • 避免一次性讀取整個工作表,建議分批處理。
  • 若需處理多檔案,建議結合自動化排程工具(如 Monday.com)。

常見錯誤與例外處理

錯誤訊息 可能原因 解決方式
FileNotFoundError 檔案路徑錯誤 檢查路徑、檔名是否正確
BadZipFile: File is not a zip file 檔案非 xlsx 格式或損壞 確認檔案格式、重新下載
KeyError: ‘SheetX’ 工作表名稱錯誤 使用 wb.sheetnames 確認名稱
ValueError: openpyxl does not support .xls files 檔案為舊版 Excel (.xls) 轉存為 .xlsx 格式

實務建議
– 讀取前先確認檔案格式與工作表名稱。
– 例外處理可避免批次自動化中斷。


openpyxl 實用應用案例

案例一:批次讀取多份報表

假設有多個部門月報需彙整:

import glob
from openpyxl import load_workbook

files = glob.glob('reports/*.xlsx')
for file in files:
    wb = load_workbook(file, data_only=True)
    sheet = wb.active
    dept = sheet['A1'].value
    value = sheet['B2'].value
    print(f"{dept} 部門本月數值:{value}")

案例二:自動彙整專案進度

將多個專案進度表資料合併至一份總表,提升團隊協作效率。


openpyxl 與其他工具比較

工具 特色 適用時機
openpyxl 支援格式豐富、可讀寫、格式控制 需操作格式、批次自動化、專案管理
pandas 讀取速度快、資料分析強 需大量資料分析、資料清洗
xlrd 輕量、僅讀取 只需讀舊版 Excel、無格式需求

選用建議
– 需處理格式、公式、合併儲存格,建議用 openpyxl。
– 需大量資料分析、轉換,建議用 pandas。
– 只需讀舊版 .xls,可考慮 xlrd。


常見問題 FAQ

openpyxl 能處理多大的 Excel 檔案?

建議單檔不超過數十萬列。若需處理更大檔案,請務必使用 read_only 模式。

如何讀取公式計算結果?

載入檔案時加上 data_only=True,但需確保檔案已由 Excel 軟體儲存過。

為何讀取合併儲存格時只有左上角有值?

Excel 合併儲存格僅左上角儲存實際數值,其餘格會回傳 None。

openpyxl 能否寫入 Excel?

可以,openpyxl 同時支援讀取與寫入。

如何避免記憶體不足?

大型檔案請用 read_only 模式,並分批處理資料。


結論與延伸應用建議

openpyxl 是專案管理、團隊協作與自動化辦公不可或缺的工具,不僅能靈活讀取各類 Excel 檔案,還能結合自動化腳本,提升效率。建議進一步學習 openpyxl 的寫入、格式控制、圖表等功能,並可搭配 Monday.comClickUp 等專案管理平台,打造更高效的數據流與協作流程。

發佈留言

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

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

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