目錄
TogglePython 操作 Excel 的應用場景與優勢
Python 在處理 Excel 文件時,展現出極高的彈性與效率。對於專案經理、團隊領導、資料分析師或需要自動化報表的上班族而言,Python 能夠:
- 自動化重複性工作:如每週彙整多份報表、批次更新資料、產生統計摘要。
- 批次處理大量檔案:一次處理多個 Excel 檔案,節省人工合併與整理時間。
- 進行複雜資料分析:結合 pandas 等資料科學工具,進行篩選、統計、視覺化。
- 跨平台協作:無論在 Windows、Mac 或 Linux,皆可運行相同的 Python 腳本。
- 彈性整合多種數據來源:輕鬆將 Excel 與資料庫、API、CSV 等格式互通。
相較於手動操作或 VBA,Python 更適合需要高度自訂、跨平台與大量自動化的情境。例如,某跨國團隊每月需彙整各地分公司的 Excel 報表,透過 Python 可自動合併、清理與分析,大幅減少人力錯誤與時間成本。
Python 操作 Excel 的常用套件介紹與選擇建議
Python 處理 Excel 主要有以下幾種套件,各有適用情境:
| 套件名稱 | 適用格式 | 主要功能 | 優點 | 適合情境 |
|---|---|---|---|---|
| openpyxl | xlsx | 讀寫、格式、公式、圖表 | 支援格式設定、插入圖表、操作細緻 | 需控制格式、插入圖表、進階操作 |
| pandas | xls, xlsx | 讀寫、資料分析 | 讀寫速度快、資料處理強大 | 批次資料分析、合併、篩選 |
| xlrd | xls, xlsx(舊) | 讀取 | 輕量、適合舊格式 | 只需讀取舊版 Excel |
| xlwt | xls | 寫入 | 輕量、適合舊格式 | 只需寫入舊版 Excel |
| xlsxwriter | xlsx | 寫入、格式、圖表 | 格式設定彈性、支援圖表 | 需大量格式化、產生報表 |
| pyxlsb | xlsb | 讀取二進位格式 | 支援 .xlsb 檔案 | 處理大型二進位 Excel |
選擇建議:
– 需進行資料分析、批次處理:建議用 pandas。
– 需細緻控制格式、插入圖表、公式:建議用 openpyxl 或 xlsxwriter。
– 處理舊版 .xls:可用 xlrd、xlwt。
– 需讀取 .xlsb:用 pyxlsb。
安裝與環境建議
安裝方式
- pip 安裝(適用所有平台)
bash
pip install openpyxl pandas xlsxwriter - Anaconda 環境
建議資料分析、科學運算用戶使用 Anaconda,內建 pandas,安裝 openpyxl:
bash
conda install openpyxl
作業系統注意事項
- Windows/Mac/Linux:上述套件皆支援,安裝方式相同。
- Python 版本建議:建議 3.7 以上,避免相容性問題。
- 常見安裝問題:若遇到權限問題,可加上
--user,或確認 pip/conda 已更新。
常見安裝錯誤與排解
- 找不到 pip:請確認 Python 已加入環境變數。
- 安裝失敗:檢查網路、權限或套件名稱拼寫。
Excel 基礎操作教學
openpyxl 讀取與寫入 Excel
讀取 Excel 範例
import openpyxl
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook['Sheet1'] # 指定工作表
value = sheet['A1'].value
print(value)
常見應用情境:自動讀取報表、抓取指定欄位資料。
寫入 Excel 範例
import openpyxl
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet['A1'] = '姓名'
sheet['B1'] = '分數'
sheet.append(['王小明', 90])
workbook.save('output.xlsx')
延伸技巧:可用 append() 批次寫入多列資料。
多工作表操作
sheet2 = workbook.create_sheet('統計')
sheet2['A1'] = '總分'
workbook.save('output.xlsx')
常見錯誤:工作表名稱重複會報錯,請先檢查是否已存在。
pandas 讀取與寫入 Excel
讀取 Excel
import pandas as pd
df = pd.read_excel('example.xlsx', sheet_name='Sheet1')
print(df.head())
適用場景:需進行大量資料篩選、統計、合併時。
寫入 Excel
df.to_excel('output.xlsx', index=False, sheet_name='結果')
注意事項:index=False 可避免多餘索引欄。
多工作表寫入
with pd.ExcelWriter('output.xlsx') as writer:
df1.to_excel(writer, sheet_name='原始資料')
df2.to_excel(writer, sheet_name='分析結果')
常見錯誤:若檔案已開啟,寫入會失敗,請先關閉 Excel。
進階應用技巧
多工作表與多檔案操作
合併多個 Excel 檔案
import pandas as pd
import glob
files = glob.glob('data/*.xlsx')
dfs = [pd.read_excel(f) for f in files]
merged = pd.concat(dfs, ignore_index=True)
merged.to_excel('merged.xlsx', index=False)
產業案例:每月自動合併各部門上傳的業績報表。
資料篩選、排序與轉換
filtered = df[df['分數'] > 80]
sorted_df = filtered.sort_values(by='分數', ascending=False)
常見錯誤:欄位名稱需完全一致,否則會 KeyError。
格式設定與公式插入(openpyxl)
設定字型、顏色
from openpyxl.styles import Font, PatternFill
sheet['A1'].font = Font(bold=True, color='FF0000')
sheet['A1'].fill = PatternFill('solid', fgColor='FFFF00')
插入公式
sheet['C2'] = '=SUM(B2:B10)'
常見應用:自動產生統計欄位,減少手動計算。
插入圖表與圖片
插入圖表
from openpyxl.chart import BarChart, Reference
chart = BarChart()
data = Reference(sheet, min_col=2, min_row=1, max_col=2, max_row=10)
chart.add_data(data, titles_from_data=True)
sheet.add_chart(chart, "E5")
產業應用:自動產生業績長條圖,嵌入報表。
插入圖片
from openpyxl.drawing.image import Image
img = Image('logo.png')
sheet.add_image(img, 'A10')
注意事項:圖片需為支援格式(如 PNG、JPEG)。
常見錯誤與排解
- 中文亂碼:請確認檔案編碼與 Excel 設定一致,pandas 讀寫時可加
encoding='utf-8'。 - 日期格式錯亂:openpyxl 讀取日期時,建議用
cell.value.strftime('%Y-%m-%d')。 - 合併儲存格操作:用
sheet.merge_cells('A1:B1'),但合併後僅左上儲存格有值。 - 檔案損毀:寫入時請勿同時開啟 Excel 檔案,避免損壞。
Python in Excel(Microsoft 365 新功能簡介)
Microsoft 365 近期推出「Python in Excel」功能,允許用戶直接在 Excel 儲存格中撰寫與執行 Python 程式碼。此功能適合:
- 需在 Excel 內即時分析資料、產生視覺化圖表
- 不熟悉外部 Python 環境但需進行進階分析的用戶
優點:無需安裝額外套件、與 Excel 公式無縫整合、雲端運算資源。
限制:目前僅支援部分訂閱用戶,且部分 Python 套件受限。
比較:
– 傳統 Python 操作 Excel:彈性高、可自動化批次處理、適合大量檔案與複雜流程。
– Python in Excel:適合即時分析、單一檔案、互動式操作。
實際應用案例分享
案例一:自動化月報產生
某企業每月需彙整多部門 Excel 報表,過去需人工複製、整理。導入 Python 腳本後,自動讀取各部門檔案、合併、產生統計圖表,並自動寄送結果,大幅提升效率並減少錯誤。
案例二:批次資料清理與轉換
一位專案經理需將多份供應商提供的 Excel 檔案,統一欄位名稱、格式與日期,透過 pandas 自動轉換與合併,節省大量人工校對時間。
案例三:團隊協作自動化
團隊利用 Python 腳本與雲端協作工具(如 Monday.com),自動同步 Excel 任務進度表,確保專案資訊即時更新,提升跨部門溝通效率。
FAQ:Python 操作 Excel 常見問題集
Q1:如何避免寫入 Excel 時出現「檔案被佔用」錯誤?
A:請確認 Excel 檔案未被開啟,或寫入前關閉所有相關程式。
Q2:pandas 讀取 Excel 時出現「ValueError: Excel file format cannot be determined」怎麼辦?
A:請確認檔案副檔名正確,且檔案未損毀,必要時指定 engine='openpyxl'。
Q3:openpyxl 寫入中文時出現亂碼?
A:openpyxl 原生支援 utf-8,若出現亂碼多為 Excel 顯示問題,請確認字型設定。
Q4:如何同時寫入多個工作表?
A:pandas 可用 ExcelWriter,openpyxl 可用 create_sheet 新增工作表。
Q5:如何在 Excel 中插入自訂公式?
A:openpyxl 可直接將公式字串寫入儲存格,如 sheet['B2'] = '=SUM(A2:A10)'。
總結與工具推薦
Python 在處理 Excel 檔案時,無論是自動化日常報表、批次資料清理、進階資料分析,皆展現出高度彈性與效率。建議根據實際需求選擇合適套件,並結合團隊協作平台(如 Monday.com)、線上課程資源(如 Coursera),進一步提升專案管理與資料處理能力。若希望系統性學習 Python 與資料分析,亦可考慮相關線上課程,快速掌握實務技巧。