python使用openpyxl實(shí)現(xiàn)批量調(diào)整字體和樣式
使用openpyxl 批量調(diào)整字體和樣式
修改字體樣式 Font(name,size,bold,italic,color)
from openpyxl.styles import Font from openpyxl import load_workbook ''' Font(name=字體名稱,size=字體大小,bold=是否加粗,italic=是否斜體,color=字體顏色) ''' workbook = load_workbook(filename="../excelDemo/testCase.xlsx") sheet = workbook.active cell = sheet["A1"] font = Font(name="微軟雅黑",size=20,bold=True,italic=True,color="FF0000") # 這個 color 是 RGB 的 16 進(jìn)制表示 cell.font = font workbook.save(filename="../excelDemo/testCase.xlsx")
效果展示:

獲取表格中格子的字體樣式
font.name字體名稱font.size字體大小font.bold是否加粗 返回的是布爾值font.italic是否斜體 返回的是布爾值font.color字體顏色 返回顏色類型和相關(guān)參數(shù)
from openpyxl.styles import Font from openpyxl import load_workbook workbook = load_workbook(filename="../excelDemo/testCase.xlsx") sheet = workbook.active cell = sheet["A1"] font = cell.font print(font.name, font.size, font.bold, font.italic, font.color) ''' 輸出結(jié)果: 微軟雅黑 20.0 True True <openpyxl.styles.colors.Color object> Parameters: rgb='00FF0000', indexed=None, auto=None, theme=None, tint=0.0, type='rgb' '''
設(shè)置對齊樣式 Alignment(horizontal,vertical,text_rotation,wrap_text)
Alignment(horizontal=水平對齊模式,vertical=垂直對齊模式,text_rotation=旋轉(zhuǎn)角度,wrap_text=是否自動換行)
- 水平對齊:
- horizontal代表水平方向,可以左對齊left,還有居中center和右對齊right,分散對齊distributed,跨列居中centerContinuous,兩端對齊justify,填充fill,常規(guī)general
- 垂直對齊:
- vertical代表垂直方向,可以居中center,還可以靠上top,靠下bottom,兩端對齊justify,分散對齊distributed
workbook = load_workbook(filename="../excelDemo/testCase.xlsx") sheet = workbook.active cell = sheet["A3"] alignment = Alignment(horizontal="center",vertical="center",text_rotation=45,wrap_text=True) cell.alignment = alignment workbook.save(filename="../excelDemo/testCase.xlsx")

設(shè)置邊框樣式 Side(style,color)
Side(style=邊線樣式,color=邊線顏色) * style 參數(shù)的種類: 'double, 'mediumDashDotDot', 'slantDashDot', 'dashDotDot','dotted','hair', 'mediumDashed, 'dashed', 'dashDot', 'thin', 'mediumDashDot','medium', 'thick' Border(left=左邊線樣式,right=右邊線樣式,top=上邊線樣式,bottom=下邊線樣式)
from openpyxl.styles import Side,Border from openpyxl import load_workbook workbook = load_workbook(filename="../excelDemo/testCase.xlsx") sheet = workbook.active cell = sheet["D6"] side1 = Side(style="thin",color="FF0000") side2 = Side(style="thick",color="FFFF0000") border = Border(left=side1,right=side1,top=side2,bottom=side2) cell.border = border workbook.save(filename="../excelDemo/testCase.xlsx")
展示效果:

設(shè)置填充樣式 PatternFill()、GradientFill()
語法:
- PatternFill(fill_type=填充樣式,fgColor=填充顏色)
- GradientFill(stop=(漸變顏色 1,漸變顏色 2……))
from openpyxl.styles import PatternFill,GradientFill
from openpyxl import load_workbook
workbook = load_workbook(filename="../excelDemo/testCase.xlsx")
sheet = workbook.active
cell_b9 = sheet["B9"]
pattern_fill = PatternFill(fill_type="solid",fgColor="99ccff")
cell_b9.fill = pattern_fill
cell_b10 = sheet["B10"]
gradient_fill = GradientFill(stop=("FFFFFF","99ccff","000000"))
cell_b10.fill = gradient_fill
workbook.save(filename="../excelDemo/testCase.xlsx")
展示效果:

設(shè)置行高和列寬
語法:
.row_dimensions[行編號].height = 行高 .column_dimensions[列編號].width = 列寬
from openpyxl import load_workbook workbook = load_workbook(filename="../excelDemo/testCase.xlsx") sheet = workbook.active # 設(shè)置第 1 行的高度 sheet.row_dimensions[1].height = 50 # 設(shè)置 B 列的寬度 sheet.column_dimensions["B"].width = 20 workbook.save(filename="../excelDemo/testCase.xlsx")
也可以統(tǒng)一整張表的行高和列寬
from openpyxl import load_workbook workbook = load_workbook(filename="../excelDemo/testCase.xlsx") sheet = workbook.active # 將整個表的行高設(shè)置為 50,列寬設(shè)置為 30; sheet.row_dimensions.height = 50 sheet.column_dimensions.width = 30 workbook.save(filename="../excelDemo/testCase.xlsx")
合并單元格與取消合并單元格
合并單元格 merge_cells()
語法:
.merge_cells(待合并的格子編號) .merge_cells(start_row=起始行號,start_column=起始列號,end_row=結(jié)束行號,end_column=結(jié)束列號)
from openpyxl import load_workbook
workbook = load_workbook(filename="./testCase.xlsx")
sheet = workbook.active
sheet.merge_cells("C1:D2")
sheet.merge_cells(start_row=7,start_column=1,end_row=8,end_column=3)
workbook.save(filename="./testCase.xlsx")若合并的多個單元格中均有內(nèi)容,只保留第一個單元格中的內(nèi)容
效果如下:

取消合并單元格 unmerge_cells()
語法:
.unmerge_cells(待合并的格子編號) .unmerge_cells(start_row=起始行號,start_column=起始列號,end_row=結(jié)束行號,end_column=結(jié)束列號)
from openpyxl import load_workbook
workbook = load_workbook(filename="./testCase.xlsx")
sheet = workbook.active
sheet.merge_cells("C1:D2")
sheet.merge_cells(start_row=7,start_column=1,end_row=8,end_column=3)
workbook.save(filename="./testCase.xlsx")注意:取消合并單元格,不能恢復(fù)合并單元格所丟失的數(shù)據(jù)
效果如下:

總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 網(wǎng)頁解析HTMLParse的實(shí)例詳解
這篇文章主要介紹了Python 網(wǎng)頁解析HTMLParse的實(shí)例詳解的相關(guān)資料,python里提供了一個簡單的解析模塊HTMLParser類,使用起來也是比較簡單的,解析語法沒有用到XPath類似的簡潔模式,需要的朋友可以參考下2017-08-08
Django使用HttpResponse返回圖片并顯示的方法
今天小編就為大家分享一篇Django使用HttpResponse返回圖片并顯示的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
python程序中斷然后接著中斷代碼繼續(xù)運(yùn)行問題
這篇文章主要介紹了python程序中斷然后接著中斷代碼繼續(xù)運(yùn)行問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
深入理解Python中的*args和**kwargs參數(shù)(示例代碼)
*args和**kwargs是Python函數(shù)編程中極其有用的特性,它們?yōu)楹瘮?shù)參數(shù)的處理提供了極大的靈活性和強(qiáng)大的功能,這篇文章主要介紹了Python中的*args和**kwargs參數(shù),需要的朋友可以參考下2024-06-06
Python中判斷語句入門指南(if?elif?else語句)
if elif else語句是Python中的控制語句,用于根據(jù)條件執(zhí)行不同的操作,下面這篇文章主要給大家介紹了關(guān)于Python中判斷語句入門指南(if?elif?else語句)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
解決tensorflow模型壓縮的問題_踩坑無數(shù),總算搞定
這篇文章主要介紹了解決tensorflow模型壓縮的問題_踩坑無數(shù),總算搞定!希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Python結(jié)合SpeechRecognition和gTTS庫打造智能語音備忘錄
這篇文章主要為大家詳細(xì)介紹了如何利用Python的SpeechRecognition和gTTS庫,打造一款集語音輸入,自動轉(zhuǎn)文字,朗讀保存于一體的智能語音備忘錄工具,感興趣的小伙伴可以了解下2025-04-04

