目錄
TogglePython 輸出 Excel 文件總覽
在數據分析、專案管理與日常辦公自動化中,將資料輸出為 Excel 文件是常見需求。Python 提供多種高效工具協助你完成這項任務,其中以 pandas 與 openpyxl 最為主流。
選擇合適的工具,能大幅提升處理效率與彈性。以下將帶你了解兩者的適用情境與比較。
常見應用場景與選擇建議
工具 | 適用情境 | 主要優點 | 主要限制 |
---|---|---|---|
pandas | 資料分析、批次轉檔、資料庫/CSV/API資料匯出 | 快速、語法簡潔、支援多來源 | 格式自訂較有限 |
openpyxl | 需高度自訂格式、插入圖片、公式、進階 Excel 操作 | 彈性高、支援格式與公式 | 操作大量資料較繁瑣 |
產業應用案例:
– 專案經理將任務追蹤表批次匯出為 Excel 報告,便於團隊溝通(推薦 pandas)。
– 財務人員需自訂報表格式、插入公司 Logo、設定條件格式(推薦 openpyxl)。
準備工作
在開始前,請先確認 Python 已安裝於你的電腦。建議使用最新版 Python,並建立虛擬環境以隔離專案依賴。
安裝必要套件
使用以下指令安裝 pandas 與 openpyxl:
pip install pandas openpyxl
如需進行進階 Excel 操作(如插入圖片),建議同時安裝 pillow:
pip install pillow
注意事項:
– pandas 需搭配 openpyxl 才能完整支援 .xlsx 格式的匯出。
– 若遇到安裝權限問題,請嘗試加上 --user
參數。
使用 pandas 輸出 Excel
pandas 是數據分析領域的首選工具,能輕鬆將各種資料型態轉為 Excel 文件,適合批次處理與自動化任務。
建立 DataFrame 與資料來源
pandas 的核心是 DataFrame,可從多種來源建立:
import pandas as pd
# 從字典建立
data = {'姓名': ['王小明', '李小華'], '分數': [85, 92]}
df = pd.DataFrame(data)
# 從資料庫查詢結果建立
# import sqlalchemy
# engine = sqlalchemy.create_engine('sqlite:///mydb.db')
# df = pd.read_sql('SELECT * FROM scores', engine)
實務情境:
– 將 API 回傳的 JSON 轉為 DataFrame,再匯出 Excel 報表。
– 將多個 CSV 檔合併後,一次匯出為 Excel。
to_excel() 方法詳解
pandas 的 to_excel()
方法能快速將 DataFrame 輸出為 Excel 檔案:
df.to_excel('output.xlsx', index=False, sheet_name='成績表', encoding='utf-8')
常用參數說明:
參數 | 說明 | 範例 |
---|---|---|
index | 是否輸出索引欄 | index=False |
sheet_name | 工作表名稱 | sheet_name=’報表’ |
encoding | 編碼(多用於 csv) | encoding=’utf-8′ |
startrow | 起始列(適用於多表合併) | startrow=2 |
na_rep | 缺失值顯示為何字串 | na_rep=’N/A’ |
常見錯誤與解法:
– 若遇到「ExcelWriter requires openpyxl」錯誤,請確認已安裝 openpyxl。
– 中文亂碼:通常不會發生於 .xlsx,但若遇到,請確認 Excel 軟體支援 UTF-8。
多工作表輸出
若需同時輸出多個 DataFrame 至不同工作表,可用 ExcelWriter:
with pd.ExcelWriter('multi_sheet.xlsx', engine='openpyxl') as writer:
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet2', index=False)
產業應用案例:
– 每月自動產生多部門的績效報表,各部門一個工作表。
實務案例:資料轉檔、批次輸出
案例一:CSV 批次轉 Excel
import glob
csv_files = glob.glob('data/*.csv')
with pd.ExcelWriter('all_data.xlsx', engine='openpyxl') as writer:
for file in csv_files:
df = pd.read_csv(file)
sheet = file.split('/')[-1].replace('.csv', '')
df.to_excel(writer, sheet_name=sheet, index=False)
案例二:API 資料自動匯出 Excel
import requests
response = requests.get('https://api.example.com/data')
data = response.json()
df = pd.DataFrame(data)
df.to_excel('api_data.xlsx', index=False)
使用 openpyxl 進階操作 Excel
openpyxl 提供對 Excel 文件的細緻控制,適合需要自訂格式、插入圖片、公式等進階應用。
建立與儲存工作簿
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = '報表'
ws['A1'] = '姓名'
ws['B1'] = '分數'
ws.append(['王小明', 85])
ws.append(['李小華', 92])
wb.save('openpyxl_report.xlsx')
寫入資料與多工作表管理
新增/切換/刪除工作表:
ws2 = wb.create_sheet('統計')
wb.remove(wb['統計']) # 刪除工作表
批次寫入資料:
data = [
['姓名', '分數'],
['王小明', 85],
['李小華', 92]
]
for row in data:
ws.append(row)
實務情境:
– 產生多個部門報表,並自動建立分頁。
單元格格式設定與進階應用
自訂字體、顏色、合併儲存格:
from openpyxl.styles import Font, PatternFill
ws['A1'].font = Font(bold=True, color='FF0000')
ws['A1'].fill = PatternFill('solid', fgColor='FFFF00')
ws.merge_cells('A1:B1')
插入圖片:
from openpyxl.drawing.image import Image
img = Image('logo.png')
ws.add_image(img, 'C1')
寫入公式:
ws['C2'] = '=SUM(B2:B3)'
產業應用案例:
– 企業年度報表自動插入公司標誌、設計專屬格式,提升專業形象。
常見錯誤與排查
問題類型 | 常見原因 | 解決方式 |
---|---|---|
檔案被鎖定 | Excel 檔案開啟中 | 關閉檔案後再執行程式 |
中文亂碼 | 未設定正確字型 | openpyxl 寫入 .xlsx 通常不會亂碼 |
格式錯誤 | 未正確設定格式 | 使用 openpyxl.styles 設定 |
無法插入圖片 | pillow 未安裝 | pip install pillow |
pandas 與 openpyxl 功能比較與選擇建議
功能/需求 | pandas | openpyxl |
---|---|---|
批次資料匯出 | 優 | 可 |
多來源資料整合 | 優 | 一般 |
自訂格式/顏色 | 基本 | 優 |
插入圖片/公式 | 不支援 | 優 |
操作大量資料 | 優 | 一般 |
多工作表管理 | 優 | 優 |
進階自動化 | 一般 | 優 |
選擇建議:
– 需快速將大量資料匯出 Excel,建議用 pandas。
– 需高度自訂格式、插入圖片、公式,建議用 openpyxl。
– 兩者可搭配使用:先用 pandas 匯出,再用 openpyxl 進行格式美化。
常見問題 FAQ
如何避免索引欄寫入?
在 pandas 的 to_excel()
加上 index=False
參數即可。
如何寫入已存在的 Excel 檔?
可用 openpyxl 讀取現有檔案,或 pandas 的 ExcelWriter 加上 mode='a'
(需注意 openpyxl 版本支援)。
如何處理中文亂碼?
pandas 輸出 .xlsx 通常不會亂碼;若遇到問題,請確認 Excel 軟體支援 UTF-8。openpyxl 寫入 .xlsx 不會有亂碼。
如何寫入多個 Sheet?
pandas:用 ExcelWriter 寫多個 DataFrame;openpyxl:用 create_sheet()
新增分頁。
結論與進階應用建議
根據實際需求選擇合適工具,能大幅提升數據處理效率。
– 若需自動化批次匯出、資料整合,pandas 是首選。
– 需高度自訂格式、插入圖片、公式,openpyxl 更適合。
– 若需將 Excel 流程整合至團隊協作或自動化平台,可考慮 Monday.com、ClickUp 等工具,進一步提升專案管理與數據流效率。