零基礎(chǔ)帶你掌握Python Openpyxl單元格樣式修改指南
引言
在日常辦公中,我們經(jīng)常需要處理大量的 Excel 表格。雖然用 Python 提取和寫入數(shù)據(jù)非常高效,但如果交給老板或客戶的表格毫無(wú)排版、密密麻麻,閱讀體驗(yàn)將會(huì)大打折扣。
這時(shí)候,為 Excel 添加合適的**樣式(Styles)**就顯得尤為重要。加粗標(biāo)題、標(biāo)記高亮顏色、居中對(duì)齊、添加邊框……這些操作都可以通過(guò) Python 的 openpyxl 庫(kù)自動(dòng)完成。
本篇文章將系統(tǒng)地帶你走進(jìn) openpyxl 的樣式修改世界。無(wú)論你是編程小白還是有一定基礎(chǔ)的學(xué)習(xí)者,只要跟著本文的步驟,都能輕松讓你的自動(dòng)化表格“漂亮”起來(lái)!
準(zhǔn)備工作
在開始編寫代碼之前,我們需要確保環(huán)境已經(jīng)準(zhǔn)備就緒:
安裝 Python 環(huán)境:確保你的電腦上已經(jīng)安裝了 Python(推薦 3.7 及以上版本)。
安裝 openpyxl 庫(kù):打開你的命令行終端(Windows 用戶打開 cmd 或 PowerShell,Mac 用戶打開 Terminal),輸入以下命令并回車:
pip install openpyxl
基礎(chǔ)概念認(rèn)知:你需要知道在 openpyxl 中,Workbook 代表整個(gè)工作簿(Excel文件),Worksheet 代表工作表(Sheet),而 Cell 代表具體的單元格(如 A1)。
核心指南:一步步修改Excel樣式
在 openpyxl 中,所有的樣式功能都存放在 openpyxl.styles 模塊下。修改樣式的核心邏輯非常簡(jiǎn)單:導(dǎo)入樣式類 -> 實(shí)例化樣式對(duì)象 -> 將其賦值給單元格的對(duì)應(yīng)屬性。
我們需要用到的主要樣式類包括:
Font(字體)PatternFill(填充/背景色)Alignment(對(duì)齊方式)Border和Side(邊框)
下面我們逐一拆解。
1. 字體樣式修改 (Font)
我們可以修改字體的名稱、大小、粗細(xì)、斜體以及顏色。
from openpyxl import Workbook from openpyxl.styles import Font wb = Workbook() ws = wb.active cell = ws['A1'] cell.value = "這是測(cè)試字體" # 創(chuàng)建字體對(duì)象 # name: 字體名稱, size: 字號(hào), bold: 加粗, italic: 斜體, color: 16進(jìn)制顏色代碼(不帶#) custom_font = Font(name='微軟雅黑', size=14, bold=True, italic=True, color='FF0000') # 將字體應(yīng)用到單元格 cell.font = custom_font
2. 單元格填充與背景色 (PatternFill)
想給重要的數(shù)據(jù)加上背景色高亮?使用 PatternFill。
from openpyxl.styles import PatternFill cell = ws['B1'] cell.value = "高亮背景" # fill_type='solid' 表示純色填充,fgColor 設(shè)置前景色(即背景顯示的顏色) custom_fill = PatternFill(fill_type='solid', fgColor='FFFF00') # 純黃背景 cell.fill = custom_fill
3. 對(duì)齊方式 (Alignment)
調(diào)整文字的水平居中、垂直居中,或者設(shè)置自動(dòng)換行。
from openpyxl.styles import Alignment cell = ws['C1'] cell.value = "居中對(duì)齊\n自動(dòng)換行" # horizontal: 水平對(duì)齊 (center, left, right) # vertical: 垂直對(duì)齊 (center, top, bottom) # wrap_text: 自動(dòng)換行 (True/False) custom_alignment = Alignment(horizontal='center', vertical='center', wrap_text=True) cell.alignment = custom_alignment
4. 邊框設(shè)置 (Border & Side)
設(shè)置邊框稍微復(fù)雜一點(diǎn),我們需要先用 Side 定義線條的樣式(粗細(xì)、顏色),然后再用 Border 將線條應(yīng)用到單元格的上下左右。
from openpyxl.styles import Border, Side cell = ws['D1'] cell.value = "帶邊框的單元格" # 定義線條樣式 (border_style 可以是 'thin', 'thick', 'dashed', 'dotted' 等) thin_side = Side(border_style='thin', color='000000') # 黑色細(xì)線 # 將線條應(yīng)用到邊框的四個(gè)方向 custom_border = Border(left=thin_side, right=thin_side, top=thin_side, bottom=thin_side) cell.border = custom_border
5. 綜合實(shí)戰(zhàn):制作一個(gè)漂亮的表頭
讓我們把上面的知識(shí)結(jié)合起來(lái),編寫一段完整的代碼,生成一個(gè)帶有漂亮表頭的 Excel 文件。
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
def create_styled_excel():
# 1. 創(chuàng)建工作簿和工作表
wb = Workbook()
ws = wb.active
ws.title = "銷售報(bào)表"
# 2. 準(zhǔn)備表頭數(shù)據(jù)
headers = ['日期', '產(chǎn)品名稱', '銷售額', '負(fù)責(zé)人']
ws.append(headers)
# 3. 定義表頭樣式
header_font = Font(name='黑體', size=12, bold=True, color='FFFFFF') # 白色粗體
header_fill = PatternFill(fill_type='solid', fgColor='4F81BD') # 藍(lán)色背景
header_align = Alignment(horizontal='center', vertical='center') # 居中對(duì)齊
thin_side = Side(border_style='thin', color='000000')
header_border = Border(left=thin_side, right=thin_side, top=thin_side, bottom=thin_side)
# 4. 循環(huán)遍歷第一行的單元格,應(yīng)用樣式
for cell in ws[1]:
cell.font = header_font
cell.fill = header_fill
cell.alignment = header_align
cell.border = header_border
# 順便調(diào)整一下列寬,讓表格更美觀
ws.column_dimensions[cell.column_letter].width = 15
# 5. 保存文件
wb.save("Styled_Report.xlsx")
print("Excel文件生成成功,樣式已應(yīng)用!")
if __name__ == "__main__":
create_styled_excel()
常見避坑指南
對(duì)于初學(xué)者來(lái)說(shuō),在使用 openpyxl 設(shè)置樣式時(shí),經(jīng)常會(huì)遇到以下幾個(gè)“坑”:
- 顏色代碼不要加
#號(hào):在 HTML/CSS 中,顏色通常寫成#FF0000。但在openpyxl中,顏色參數(shù)采用的是 aRGB 十六進(jìn)制格式,必須省略#號(hào)(例如:直接寫FF0000代表紅色)。 - 樣式對(duì)象不能直接應(yīng)用于單元格區(qū)域(Range):你不能直接寫
ws['A1:D1'].font = font。如果你想給多個(gè)單元格設(shè)置樣式,必須使用for循環(huán)遍歷每一個(gè)單元格并分別賦值(如上方綜合實(shí)戰(zhàn)代碼所示)。 - 樣式對(duì)象是不可變的(Immutable):一旦你把一個(gè)
Font對(duì)象賦值給了一個(gè)單元格,如果你想改變其中一個(gè)屬性,不能直接修改cell.font.bold = True。你需要重新創(chuàng)建一個(gè)新的Font對(duì)象并重新賦值,或者使用copy()方法。
總結(jié)與學(xué)習(xí)資源
通過(guò)本文,我們系統(tǒng)地學(xué)習(xí)了如何使用 Python 和 openpyxl 庫(kù)來(lái)美化 Excel 表格。從字體、背景色、對(duì)齊方式到邊框,掌握了這四大核心模塊,你就已經(jīng)具備了制作專業(yè)級(jí)自動(dòng)化報(bào)表的能力。
編程是一門實(shí)踐的藝術(shù),建議你立即打開代碼編輯器,將本文的實(shí)戰(zhàn)代碼運(yùn)行一遍,并嘗試修改其中的顏色和字體,看看會(huì)發(fā)生什么變化。
進(jìn)階學(xué)習(xí)資源推薦:
- Openpyxl 官方文檔:https://openpyxl.readthedocs.io/ (最權(quán)威的參考手冊(cè),建議遇到生僻需求時(shí)查閱)。
- 十六進(jìn)制顏色碼查詢:在搜索引擎輸入“RGB顏色對(duì)照表”,可以幫助你找到心儀的表格配色代碼。
以上就是零基礎(chǔ)帶你掌握Python Openpyxl單元格樣式修改指南的詳細(xì)內(nèi)容,更多關(guān)于Python Openpyxl修改單元格樣式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python 如何將兩個(gè)實(shí)數(shù)矩陣合并為一個(gè)復(fù)數(shù)矩陣
這篇文章主要介紹了使用python實(shí)現(xiàn)將兩個(gè)實(shí)數(shù)矩陣合并為一個(gè)復(fù)數(shù)矩陣的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2021-05-05
解決啟動(dòng)django,瀏覽器顯示“服務(wù)器拒絕訪問(wèn)”的問(wèn)題
這篇文章主要介紹了解決啟動(dòng)django,瀏覽器顯示“服務(wù)器拒絕訪問(wèn)”的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
從運(yùn)行效率與開發(fā)效率比較Python和C++
今天小編就為大家分享一篇關(guān)于從運(yùn)行效率與開發(fā)效率比較Python和C++,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
pyenv安裝Python出現(xiàn)clang版本沖突的優(yōu)雅解決方法
最近在用 pyenv 安裝 Python 3.13 時(shí),突然遇到經(jīng)典報(bào)錯(cuò): configure: error: C compiler cannot create executables,下面我們就來(lái)排查一下錯(cuò)誤原因并解決吧2026-03-03

