html設(shè)置單元格寬度(html如何設(shè)置寬度)
Python對(duì)Excel表格處理非常方便,本文專門對(duì)Excel單元格樣式設(shè)置進(jìn)行總結(jié),日常用到的設(shè)置基本都可以用openpyxl庫完成。
創(chuàng)建一個(gè)表格
openpyxl是第三方庫,如果你還沒有安裝,輸入下方命令安裝。
pip install openpyxl
在開始設(shè)置單元格前,先創(chuàng)建一個(gè)excel表格,下方代碼可以新建一個(gè)Excel表格,并寫入內(nèi)容。
# coding=utf-8
importopenpyxl
# 創(chuàng)建一個(gè)excel表格對(duì)象
wb = openpyxl.Workbook
# 獲取當(dāng)前活躍的sheet頁,默認(rèn)就是第一個(gè)sheet頁
ws = wb.active
# 在表格的單元格中寫入內(nèi)容
ws.cell(row= 2, column= 3).value = '小斌哥ge'
ws.cell(row= 2, column= 4).value = '小斌哥ge'
# 處理完成后保存表格,會(huì)在當(dāng)前目錄生成一個(gè)excel文件
wb.save(filename= 'cell.xlsx')
展開全文
# 關(guān)閉表格對(duì)象
wb.close
效果:
代碼含義參考注釋,我在兩個(gè)相鄰的單元格中寫入了相同的內(nèi)容,后面的代碼對(duì)一個(gè)單元格設(shè)置樣式,另一個(gè)單元格不做處理,方便對(duì)比。
給單元格寫入內(nèi)容的方式有兩種,一種是給cell的value屬性賦值,如上面的代碼,另一種是用cell的參數(shù)設(shè)置,如ws.cell(row=2, column=3, value='xxx'),兩種方式結(jié)果一樣。
本文后面的代碼全部都添加在單元格寫入內(nèi)容后,保存內(nèi)容(wb.save)前,順序不能弄反了。(導(dǎo)包的代碼可以統(tǒng)一放到前面)
單元格字體和文字樣式
fromopenpyxl.styles importFont
# 設(shè)置字體和文字樣式
font = Font(name= "微軟雅黑", size= 12, color= 'FF0000', bold= True,
italic= True, underline= 'single', strike= False)
ws.cell(row= 2, column= 3).font = font
效果:
字體和文字樣式使用Font類設(shè)置,賦值給cell的font屬性。
Font類常用參數(shù)說明:
name: 字體名稱。
size: 字體大小。
color: 字體顏色。使用16進(jìn)制的RGB顏色值,這里的顏色值中沒有#。
bold: 設(shè)置字體加粗,布爾值。
italic: 設(shè)置字體傾斜,布爾值。
underline: 設(shè)置下劃線的樣式,默認(rèn)沒有。共有 single, double, singleAccounting, doubleAccounting 四種選擇,single單線,double雙線,不帶Accounting長(zhǎng)度與文字一致,帶Accounting長(zhǎng)度與單元格寬度一致。
strike: 設(shè)置中劃線,布爾值。
設(shè)置單元格高和寬
# 設(shè)置寬高
# row_dimensions中指定要設(shè)置高度的行
ws.row_dimensions[ 2].height = 50
# column_dimensions中指定要設(shè)置寬度的列
ws.column_dimensions[ 'C'].width = 20
效果:
單元格的高和寬不是按單元格設(shè)置,而是按行和按列設(shè)置,因?yàn)镋xcel中同一行的高度和同一列的寬度相同。
設(shè)置方法:
ws.row_dimensions[2].height: 設(shè)置第2行的高。
ws.column_dimensions['C'].width: 設(shè)置C列的寬。
注意,指定行時(shí)使用數(shù)字,指定列時(shí)使用大寫字母。這與Excel的行列編號(hào)一致。
單元格對(duì)齊方式
fromopenpyxl.styles importAlignment
# 設(shè)置內(nèi)容的對(duì)齊方式
align = Alignment(horizontal= 'left', vertical= 'center', text_rotation= 0,
wrap_text= True, shrink_to_fit= True, indent= 1)
ws.cell(row= 2, column= 3).alignment = align
效果:
單元格對(duì)齊方式使用Alignment類設(shè)置,賦值給cell的alignment屬性。
Alignment類常用參數(shù)說明:
horizontal: 水平方向?qū)R方式。默認(rèn)general(常規(guī)),可以設(shè)置為:left(左對(duì)齊),center(居中),right(右對(duì)齊),distributed(分散對(duì)齊),centerContinuous(跨列居中),justify(兩端對(duì)齊),fill(填充)。
vertical: 垂直方向?qū)R方式??梢栽O(shè)置為:top(頂端對(duì)齊),center(居中), bottom(底部對(duì)齊),justify(兩端對(duì)齊),distributed(分散對(duì)齊)。
text_rotation: 單元格旋轉(zhuǎn)角度。旋轉(zhuǎn)方向?yàn)槟鏁r(shí)針,旋轉(zhuǎn)后內(nèi)容排列方向發(fā)生變化。
wrap_text: 設(shè)置自動(dòng)換行,布爾值。
shrink_to_fit: 內(nèi)容自適應(yīng)單元格大小,布爾值。
indent: 縮進(jìn),傳入縮進(jìn)的字符數(shù)。
單元格填充顏色
fromopenpyxl.styles importPatternFill
# 設(shè)置單元格填充顏色和樣式
pattern = PatternFill(fill_type= 'lightUp', start_color= "0000FF", end_color= '00FF00')
ws.cell(row= 2, column= 3).fill = pattern
效果:
單元格填充顏色使用PatternFill類設(shè)置,賦值給cell的fill屬性。
PatternFill類參數(shù)說明:
fill_type: 填充樣式,如完整填充,虛線填充,斜線填充等,通常使用solid。可以設(shè)置的樣式有: lightTrellis, lightGray, mediumGray, darkHorizontal, lightHorizontal, darkGrid, darkDown, gray0625, lightDown, solid, darkTrellis, lightVertical, lightUp, gray125, lightGrid, darkVertical, darkGray, darkUp, 就不一一介紹了,可以自己多嘗試。
start_color: 設(shè)置填充顏色。顏色值與前面一樣,使用16進(jìn)制的RGB顏色值,不帶#。
end_color: 設(shè)置背景顏色。如果填充顏色沒有填滿(例如斜線填充),空隙處看到的是背景顏色。
PatternFill類還有三個(gè)參數(shù),與上面的三個(gè)參數(shù)作用是重復(fù)的,patternType等價(jià)于fill_type,fgColor等價(jià)于start_color,bgColor等價(jià)于end_color。openpyxl單元格設(shè)置的好幾個(gè)類都有這種參數(shù)重復(fù)的情況,其他類就不重復(fù)介紹了。
單元格填充漸變顏色
fromopenpyxl.styles importGradientFill
# linear模式,根據(jù)stop設(shè)置的多個(gè)顏色漸變填充,degree設(shè)置順時(shí)針的旋轉(zhuǎn)角度
# gradient = GradientFill(type='linear', degree=30,
# stop=('FF0000', '00FF00', '0000FF'))
# path模式,根據(jù)stop設(shè)置的多個(gè)顏色從左上角至右下角、由內(nèi)至外填充,
# left,right,top,bottom設(shè)置上下左右距離邊框的距離百分比
gradient = GradientFill(type= 'path', left= 0.1, right= 0.1, top= 0.1, bottom= 0.1,
stop=( 'FF0000', '00FF00', '0000FF'))
# ws.cell(row=2, column=3).fill = gradient
效果:
linear模式
path模式
單元格填充漸變顏色使用GradientFill類設(shè)置,賦值給cell的fill屬性。
GradientFill類參數(shù)說明:
type: 填充模式,分為兩種模式'linear'、'path'。
stop: 設(shè)置漸變填充用的多個(gè)顏色,傳入一個(gè)由RGB顏色值組成的元組。
linear模式:根據(jù)stop設(shè)置的多個(gè)顏色從左至右漸變填充。
degree: 設(shè)置漸變填充顏色順時(shí)針的旋轉(zhuǎn)角度。
path模式:根據(jù)stop設(shè)置的多個(gè)顏色從左上角至右下角、由內(nèi)至外漸變填充。
left: 設(shè)置顏色到左邊框的距離百分比(具體請(qǐng)看截圖的效果),設(shè)置為0到1的小數(shù)。
right: 設(shè)置顏色到右邊框的距離百分比。
top: 設(shè)置顏色到上邊框的距離百分比。
bottom: 設(shè)置顏色到下邊框的距離百分比。四個(gè)值可以不同。
設(shè)置單元格邊框樣式
fromopenpyxl.styles importSide, Border
# 設(shè)置線條的樣式和顏色
side = Side(style= "thick", color= "FF0000")
# 設(shè)置單元格的邊框線條
border = Border(top=side, bottom=side, left=side, right=side)
ws.cell(row= 2, column= 3).border = border
效果(為了顯示得更明顯,先將顏色填充的代碼注釋掉):
單元格邊框樣式使用Border類設(shè)置,賦值給cell的border屬性。邊框線條的樣式使用Side類設(shè)置,傳給Border類中的參數(shù)。
Side類參數(shù)說明:
style: 設(shè)置線條樣式,常用樣式有medium, thin, thick??梢栽O(shè)置的樣式有: dashDotDot, thick, mediumDashDotDot, thin, dotted, mediumDashed, dashDot, double, medium, hair, mediumDashDot, dashed, slantDashDot, 不一一介紹,可以自己多嘗試。
color: 設(shè)置線條顏色。
Border類常用參數(shù)說明:
top: 設(shè)置單元格的上邊框,傳入Side類實(shí)例。
bottom: 設(shè)置單元格的下邊框。
left: 設(shè)置單元格的左邊框。
right: 設(shè)置單元格的右邊框。
注意,設(shè)置單元格邊框樣式時(shí),前面設(shè)置單元格對(duì)齊方式中的單元格旋轉(zhuǎn)參數(shù)text_rotation會(huì)影響邊框的角度,可以根據(jù)需要配合修改,通常設(shè)置text_rotation為0。
Border類中,還有一些其他參數(shù),outline設(shè)置整個(gè)單元格的邊框,vertical設(shè)置垂直方向,horizontal設(shè)置水平方向,diagonal設(shè)置對(duì)角線, diagonal_direction設(shè)置對(duì)角線的角度,不過openpyxl有些版本不支持這些參數(shù)。所以,統(tǒng)一使用上下左右就行了,而且這樣可以給不同邊設(shè)置不一樣的 樣式。
使用openpyxl內(nèi)置樣式
# 使用內(nèi)置樣式
ws.cell(row= 2, column= 3).style = 'Title'
效果:
openpyxl內(nèi)置了很多設(shè)置好的樣式,可以直接賦值給cell的style屬性。
可以用的內(nèi)置樣式有:
常規(guī):即沒有樣式,Normal。
數(shù)字樣式: Comma, Comma [0], Currency, Currency [0], Percent。
信息樣式: Calculation, Total, Warning Text, Explanatory Text。
文本樣式: Title, Headline 1, Headline 2, Headline 3, Headline 4, Hyperlink, Followed Hyperlink, Linked Cell。
比較樣式: Input, Output, Check Cell, Good, Bad, Neutral。
高亮樣式: Accent1, 20 % - Accent1, 40 % - Accent1, 60 % - Accent1, Accent2, 20 % - Accent2, 40 % - Accent2, 60 % - Accent2, Accent3, 20 % - Accent3, 40 % - Accent3, 60 % - Accent3, Accent4, 20 % - Accent4, 40 % - Accent4, 60 % - Accent4, Accent5, 20 % - Accent5, 40 % - Accent5, 60 % - Accent5, Accent6, 20 % - Accent6, 40 % - Accent6, 60 % - Accent6, Pandas。
提供的 樣式非常多,可以慢慢嘗試。
當(dāng)然,也可以自定義樣式,利用前面介紹的方式定義好字體、對(duì)齊方式等,然后借助NamedStyle類,將前面設(shè)置的樣式傳入NamedStyle類中生成一個(gè)實(shí)例,然后賦值給cell的style屬性。受篇幅限制就不再詳細(xì)演示了。
fromopenpyxl.styles importNamedStyle
此外,也可以將前面設(shè)置好的各種樣式封裝到一個(gè)函數(shù)中,重復(fù)調(diào)用,與自定義樣式的效果異曲同工。
合并單元格
ws.cell(row= 5, column= 5).value = '秦'
ws.cell(row= 5, column= 6).value = 'A'
ws.cell(row= 5, column= 7).value = 'B'
ws.cell(row= 5, column= 8).value = 'W'
ws.cell(row= 6, column= 5).value = 'C'
ws.cell(row= 6, column= 6).value = 'D'
ws.cell(row= 6, column= 7).value = 'E'
ws.cell(row= 6, column= 8).value = 'W'
# 合并單元格
ws.merge_cells(start_row= 5, start_column= 5, end_row= 6, end_column= 7)
# ws.merge_cells(range_string='E5:G6')
效果:
在合并前,先在表格中寫入一些內(nèi)容,然后對(duì)其中的部分單元格進(jìn)行合并。
合并單元格使用ws.merge_cells方法,參數(shù)介紹:
start_row: 開始合并的行。
start_column: 開始合并的列。
end_row: 結(jié)束合并的行。
end_column: 結(jié)束合并的列。這四個(gè)值所在的行/列都會(huì)被合并(閉區(qū)間)。
range_string: 指定合并的單元格范圍,如E5:G6,第一個(gè)值是左上角的單元格,第二個(gè)值是右下角的單元格。 如果沒有設(shè)置range_string,則merge_cells會(huì)根據(jù)前四個(gè)參數(shù)自動(dòng)計(jì)算出range_string。如果五個(gè)參數(shù)都設(shè)置了,則range_string會(huì)覆蓋前四個(gè)參數(shù)的設(shè)置。
合并單元格后,除了左上角的單元格的值保留,其他單元格的值都會(huì)被刪除,并且其他單元格都變成了只讀(read-only)單元格,不能寫入內(nèi)容。
給合并后的單元格設(shè)置前文介紹的各種樣式時(shí),字體、對(duì)齊方式、顏色填充用左上角的單元格設(shè)置,高寬按行列設(shè)置,邊框樣式要依次對(duì)每一個(gè)被合并的處于邊緣的單元格設(shè)置。
取消合并單元格
# 取消合并單元格
ws.unmerge_cells(start_row= 5, start_column= 5, end_row= 6, end_column= 7)
# ws.merge_cells(range_string='E5:G6')
效果:
取消合并單元格使用ws.unmerge_cells方法,參數(shù)與ws.merge_cells方法完全一樣。
取消合并后,合并單元格時(shí)被刪除的內(nèi)容不能恢復(fù),除了左上角的單元格,其他單元格的內(nèi)容為空,可以重新寫入內(nèi)容。
總結(jié)
本文完整總結(jié)了用Python設(shè)置Excel單元格樣式的知識(shí),全是干貨,非常值得收藏。
文中用一個(gè)單元格做演示,實(shí)際使用時(shí)經(jīng)常需要批量操作,這個(gè)時(shí)候加個(gè)for循環(huán),改變cell中的row, column值,就可以批量處理了。批量處理的方法還有很多,可以因地制宜。
本文簡(jiǎn)單易學(xué),很多地方比官方文檔還詳細(xì),希望對(duì)你有幫助,期待你的三連。
參考文檔:
[1] openpyxl官方文檔:https://openpyxl.readthedocs.io/en/stable/styles.html#cell-styles
自動(dòng)化辦公我還是非常推薦下面這幾本書的,有需要的同學(xué)可以公眾號(hào)后臺(tái)咨詢小助手。公眾號(hào):后臺(tái)輸入:小助手 ,暗號(hào)(自動(dòng)化書).
入門: 最全的零基礎(chǔ)學(xué)Python的問題 | 零基礎(chǔ)學(xué)了8個(gè)月的Python |實(shí)戰(zhàn)項(xiàng)目 | 學(xué)Python就是這條捷徑
干貨:爬取豆瓣短評(píng),電影《后來的我們》 | 38年NBA最佳球員分析 |從萬眾期待到口碑撲街!唐探3令人失望 | 笑看新倚天屠龍記 | 燈謎答題王 | 用Python做個(gè)海量小姐姐素描圖 | 碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影
趣味:彈球游戲 | 九宮格 | 漂亮的花 | 兩百行Python《天天酷跑》游戲!
AI:會(huì)做詩的機(jī)器人 | 給圖片上色 | 預(yù)測(cè)收入 | 碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影
小工具: Pdf轉(zhuǎn)Word,輕松搞定表格和水?。?| 一鍵把html網(wǎng)頁保存為pdf! |再見PDF提取收費(fèi)! | 用90行代碼打造最強(qiáng)PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換 | 制作一款釘釘?shù)蛢r(jià)機(jī)票提示器! |60行代碼做了一個(gè)語音壁紙切換器天天看小姐姐! |
年度爆款文案
1). 臥槽!Pdf轉(zhuǎn)Word用Python輕松搞定 !
2).學(xué)Python真香!我用100行代碼做了個(gè)網(wǎng)站,幫人PS旅行圖片,賺個(gè)雞腿吃
3).首播過億,火爆全網(wǎng),我分析了《乘風(fēng)破浪的姐姐》,發(fā)現(xiàn)了這些秘密
4). 80行代碼!用Python做一個(gè)哆來A夢(mèng)分身
5).你必須掌握的20個(gè)python代碼,短小精悍,用處無窮
6). 30個(gè)Python奇淫技巧集
7). 我總結(jié)的80頁《菜鳥學(xué)Python精選干貨.pdf》,都是干貨
8). 再見Python!我要學(xué)Go了!2500字深度分析 !
9).發(fā)現(xiàn)一個(gè)舔狗福利!這個(gè)Python爬蟲神器太爽了,自動(dòng)下載妹子圖片
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。