自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

完全解讀 OpenPyXL 設(shè)置 Excel 單元格樣式

開發(fā) 后端
您應(yīng)該謹慎使用在本文中學(xué)到的技能。如果您想了解有關(guān) OpenPyXL 支持樣式的更多信息,您可以查看他們的文檔。

[[417379]]

Python中文社區(qū) (ID:python-china)

 OpenPyXL 使您能夠以多種不同的方式設(shè)置單元格的樣式。樣式化單元格會讓您的電子表格充滿魅力!這將有助于將它們與其他電子表格區(qū)分開來。但是請不要過度使用, 如果每個單元格都有不同的字體和顏色,您的電子表格就會看起來一團糟。

您應(yīng)該謹慎使用在本文中學(xué)到的技能。如果您想了解有關(guān) OpenPyXL 支持樣式的更多信息,您可以查看他們的文檔。

https://openpyxl.readthedocs.io/en/stable/styles.html

在本文中,您將了解以下內(nèi)容:

•  設(shè)置字體

•  設(shè)置對齊方式

•  添加邊框•更改單元格背景顏色

•  將圖像插入單元格•樣式合并單元格

•  使用內(nèi)置樣式

•  創(chuàng)建自定義命名樣式

現(xiàn)在是時候開始探索如何使用 OpenPyXL 處理字體了!

設(shè)置字體

您可以用字體在計算機上設(shè)置文本樣式。字體控制您在屏幕上或打印中看到的文本的大小、粗細、顏色和樣式。您的計算機可以使用數(shù)千種字體。Microsoft 在其 Office 產(chǎn)品中包含了許多字體。

當(dāng)您想使用 OpenPyXL 設(shè)置字體時,您需要從 openpyxl.styles 導(dǎo)入 Font 類。以下演示您將如何進行導(dǎo)入:

  1. from openpyxl.styles import Font 

Font 類采用許多參數(shù)。根據(jù) OpenPyXL 的文檔,這是 Font 類的完整參數(shù)列表: 

  1. class openpyxl.styles.fonts.Font(name=Nonesz=Noneb=Nonei=Nonecharset=Noneu=None,   
  2.     strike=Nonecolor=Nonescheme=Nonefamily=Nonesize=Nonebold=Noneitalic=None,   
  3.     strikethrough=Noneunderline=NonevertAlign=Noneoutline=Noneshadow=None,   
  4.     condense=Noneextend=None

以下列表顯示了您最有可能使用的參數(shù)及其默認值:

•  name=’Calibri’

•  size=11

•  bold=False

•  italic=False

•  vertAlign=None

•  underline=’none’•strike=False•color=’FF000000′

這些參數(shù)允許您設(shè)置使文本看起來漂亮所需的大部分內(nèi)容。請注意,OpenPyXL 中的顏色名稱使用十六進制值來表示 RGB(紅、綠、藍)顏色值。您可以設(shè)置文本是否應(yīng)為粗體、斜體、下劃線或刪除線。

要了解如何在 OpenPyXL 中使用字體,請創(chuàng)建一個名為 font_sizes.py 的新文件,并向其中添加以下代碼: 

  1. # font_sizes.py  
  2. import openpyxl  
  3. from openpyxl.styles import Font  
  4. def font_demo(path):  
  5.     workbook = openpyxl.Workbook()  
  6.     sheet = workbook.active  
  7.     cell = sheet["A1"]  
  8.     cell.font = Font(size=12 
  9.     cell.value = "Hello"  
  10.     cell2 = sheet["A2"]  
  11.     cell2.font = Font(name="Arial"size=14color="00FF0000" 
  12.     sheet["A2"] = "from"  
  13.     cell2 = sheet["A3"]  
  14.     cell2.font = Font(name="Tahoma"size=16color="00339966" 
  15.     sheet["A3"] = "OpenPyXL"  
  16.     workbook.save(path)  
  17. if __name__ == "__main__":  
  18.     font_demo("font_demo.xlsx") 

此代碼在三個不同的單元格中使用了三種不同的字體。在 A1 中,您使用默認值,即 Calibri。然后在 A2 中,將字體大小設(shè)置為 Arial 并將大小增加到 14 磅。最后,在 A3 中,您將字體更改為 Tahoma,將字體大小更改為 16 磅。

對于第二種和第三種字體,您還可以更改文本顏色。在 A2 中,將顏色設(shè)置為紅色,在 A3 中,將顏色設(shè)置為綠色。

當(dāng)您運行此代碼時,您的輸出將如下所示:

嘗試更改代碼以使用其他字體或顏色。如果你想冒險,你應(yīng)該嘗試將你的文字加粗或斜體。

現(xiàn)在您已準(zhǔn)備好學(xué)習(xí)文本對齊。

設(shè)置對齊

您可以使用 openpyxl.styles.Alignment 在 OpenPyXL 中設(shè)置對齊方式。您可以使用此類來旋轉(zhuǎn)文本、設(shè)置文本換行和縮進。

以下是 Alignment類使用的默認值:

•  horizontal=’general’

•  vertical=’bottom’•text_rotation=0

•  wrap_text=False

•  shrink_to_fit=False

•  indent=0

打開 Python 編輯器并創(chuàng)建一個名為 alignment.py 的新文件。然后在其中添加以下代碼: 

  1. # alignment.py  
  2. from openpyxl import Workbook  
  3. from openpyxl.styles import Alignment  
  4. def center_text(path, horizontal="center"vertical="center"):  
  5.     workbook = Workbook()  
  6.     sheet = workbook.active  
  7.     sheet["A1"] = "Hello"  
  8.     sheet["A1"].alignment = Alignment(horizontalhorizontal=horizontal,  
  9.                                       verticalvertical=vertical)  
  10.     sheet["A2"] = "from"  
  11.     sheet["A3"] = "OpenPyXL"  
  12.     sheet["A3"].alignment = Alignment(text_rotation=90 
  13.     workbook.save(path)  
  14. if __name__ == "__main__":  
  15.     center_text("alignment.xlsx") 

運行此代碼時,您將在 A1 中水平和垂直居中字符串。然后使用 A2 的默認值。最后,對于 A3,將文本旋轉(zhuǎn) 90 度。

嘗試運行此代碼,您將看到如下內(nèi)容:

最好花時間嘗試不同的 text_rotation 值。然后嘗試使用不同的值更改水平和垂直參數(shù)。很快,您就可以像專業(yè)人士一樣對齊文本了!

現(xiàn)在您已準(zhǔn)備好了解如何為單元格添加邊框!

添加邊框

OpenPyXL 使您能夠設(shè)置單元格邊框的樣式。您可以為單元格的四個邊中的每一個指定不同的邊框樣式。

您可以使用以下任何一種邊框樣式:

•‘  dashDot’

•‘  dashDotDot’

•‘  dashed’•‘dotted’

•‘  double’•‘hair’•‘medium’

•‘  mediumDashDot’

•‘  mediumDashDotDot’,

•‘  mediumDashed’

•‘  slantDashDot’•‘thick’

•‘  thin’

打開 Python 編輯器并創(chuàng)建一個名為 border.py 的新文件。然后在您的文件中輸入以下代碼: 

  1. # border.py  
  2. from openpyxl import Workbook  
  3. from openpyxl.styles import Border, Side  
  4. def border(path):  
  5.     pink = "00FF00FF"  
  6.     green = "00008000"  
  7.     thin = Side(border_style="thin"color=pink 
  8.     double = Side(border_style="double"color=green 
  9.     workbook = Workbook()  
  10.     sheet = workbook.active  
  11.     sheet["A1"] = "Hello"  
  12.     sheet["A1"].border = Border(top=doubleleft=thinright=thinbottom=double 
  13.     sheet["A2"] = "from"  
  14.     sheet["A3"] = "OpenPyXL"  
  15.     sheet["A3"].border = Border(top=thinleft=doubleright=doublebottom=thin 
  16.     workbook.save(path)  
  17. if __name__ == "__main__":  
  18.     border("border.xlsx") 

此代碼將為單元格 A1 和 A3 添加邊框。A1的頂部和底部使用“雙”邊框樣式并為綠色,而單元格側(cè)面使用“細”邊框樣式并為粉紅色。

單元格 A3 使用相同的邊框,但交換了它們,現(xiàn)在邊為綠色,頂部和底部為粉紅色。

您可以通過在 border_style 和要使用的顏色中創(chuàng)建 Side 對象來獲得此效果。然后將這些 Side 對象傳遞給 Border 類,該類允許您單獨設(shè)置單元格的四個邊中的每一個。要將邊框應(yīng)用于單元格,您必須設(shè)置單元格的邊框?qū)傩浴?/p>

運行此代碼時,您將看到以下結(jié)果:

此圖像被放大了很多,以便您可以輕松看到單元格的邊框。如果您嘗試使用本節(jié)開頭提到的其他一些邊框樣式來修改此代碼,您可以了解您還可以做什么。

更改單元格背景顏色

您可以通過更改背景顏色來突出顯示一個單元格或一系列單元格。在大多數(shù)情況下,突出顯示單元格比更改文本的字體或顏色更引人注目。OpenPyXL 為您提供了一個名為 PatternFill 的類,您可以使用它來更改單元格的背景顏色。

PatternFill 類接受以下參數(shù)(默認值包括在下面):

•  patternType=None

•  fgColor=Color()

•  bgColor=Color()

•  fill_type=None

•  start_color=None

•  end_color=None

您可以使用多種不同的填充類型。以下是當(dāng)前支持的填充類型列表:

•‘none’

•‘solid’

•‘darkDown’

•‘darkGray’

•‘darkGrid’

•‘darkHorizontal’

•‘darkTrellis’

•‘darkUp’

•‘darkVertical’

•  ‘gray0625’

•  ‘gray125’

•  ‘lightDown’

•  ‘lightGray’

•  ‘lightGrid’

•  ‘lightHorizontal’

•  ‘lightTrellis’

•  ‘lightUp’

•  ‘lightVertical’•‘mediumGray’

現(xiàn)在您有足夠的信息來嘗試使用 OpenPyXL 設(shè)置單元格的背景顏色。在 Python 編輯器中打開一個新文件并將其命名為 background_colors.py。然后將此代碼添加到您的新文件中: 

  1. # background_colors.py  
  2. from openpyxl import Workbook  
  3. from openpyxl.styles import PatternFill  
  4. def background_colors(path):  
  5.     workbook = Workbook()  
  6.     sheet = workbook.active  
  7.     yellow = "00FFFF00"  
  8.     for rows in sheet.iter_rows(min_row=1max_row=10min_col=1max_col=12):  
  9.         for cell in rows:  
  10.             if cell.row % 2:  
  11.                 cell.fill = PatternFill(start_color=yellowend_color=yellow 
  12.                                         fill_type = "solid" 
  13.     workbook.save(path)  
  14. if __name__ == "__main__":  
  15.     background_colors("bg.xlsx") 

此示例將迭代 9 行 12 列。如果該單元格在奇數(shù)行中,它會將每個單元格的背景顏色設(shè)置為黃色。背景顏色發(fā)生變化的單元格將從 A 列到 L 列。

當(dāng)您想設(shè)置單元格的背景顏色時,您可以將單元格的填充屬性設(shè)置為 PatternFill 的實例。在此示例中,您指定 start_color 和 end_color。您還將 fill_type 設(shè)置為“solid”。OpenPyXL 還支持使用 GradientFill 作為背景。

嘗試運行此代碼。運行后,您將擁有一個新的 Excel 文檔,如下所示:

以下是您可以使用此代碼嘗試的一些想法:

•  更改受影響的行數(shù)或列數(shù)

•  更改您要更改的顏色

•  更新代碼以使用不同顏色為偶數(shù)行著色

•  嘗試其他填充類型

完成對背景顏色的試驗后,您可以了解如何在單元格中插入圖像!

將圖像插入單元格

OpenPyXL 使圖像插入 Excel 電子表格變得簡單。為了實現(xiàn)這個魔法,您可以使用 Worksheet 對象的 add_image() 方法。該方法接受兩個參數(shù):

img – 您要插入的圖像文件的路徑 anchor – 提供一個單元格作為圖像的左上角錨點(可選)

對于此示例,您將使用Mouse vs. Python圖片:

[[417380]]

本書的 GitHub 存儲庫中有可供您使用的圖像。

下載圖像后,創(chuàng)建一個新的 Python 文件并將其命名為 insert_image.py。然后添加以下內(nèi)容: 

  1. # insert_image.py 
  2. from openpyxl import Workbook  
  3. from openpyxl.drawing.image import Image  
  4. def insert_image(path, image_path):  
  5.     workbook = Workbook()  
  6.     sheet = workbook.active  
  7.     img = Image("logo.png")  
  8.     sheet.add_image(img, "B1")  
  9.     workbook.save(path)  
  10. if __name__ == "__main__":  
  11.     insert_image("logo.xlsx", "logo.png") 

在這里,您傳入要插入的圖像的路徑。要插入圖像,請調(diào)用 add_image()。在此示例中,您正在硬編碼以使用單元格 B1 作為錨定單元格。然后保存 Excel 電子表格。

如果你打開你的電子表格,你會看到它看起來像這樣:

您可能不需要經(jīng)常在 Excel 電子表格中插入圖像,但這是一項極好的技能。

樣式合并單元格

合并單元格是將兩個或多個相鄰單元格合并為一個單元格。如果要使用 OpenPyXL 設(shè)置合并單元格的值,則必須使用合并單元格的最左上角的單元格。

您還必須使用此特定單元格為整個合并單元格設(shè)置樣式。您可以將在單個單元格上使用的所有樣式和字體設(shè)置與合并單元格一起使用。但是,您必須將樣式應(yīng)用于左上角的單元格,才能將其應(yīng)用于整個合并單元格。

如果您看到一些代碼,您就會明白這是如何工作的。繼續(xù)創(chuàng)建一個名為 style_merged_cell.py 的新文件?,F(xiàn)在在您的文件中輸入以下代碼: 

  1. # style_merged_cell.py  
  2. from openpyxl import Workbook  
  3. from openpyxl.styles import Font, Border, Side, GradientFill, Alignment  
  4. def merge_style(path):  
  5.     workbook = Workbook()  
  6.     sheet = workbook.active  
  7.     sheet.merge_cells("A2:G4")  
  8.     top_left_cell = sheet["A2"]  
  9.     light_purple = "00CC99FF"  
  10.     green = "00008000"  
  11.     thin = Side(border_style="thin"color=light_purple 
  12.     double = Side(border_style="double"color=green 
  13.     top_left_cell.value = "Hello from PyOpenXL"  
  14.     top_left_cell.border = Border(top=doubleleft=thinright=thin 
  15.                                   bottom=double 
  16.     top_left_cell.fill = GradientFill(stop=("000000", "FFFFFF"))  
  17.     top_left_cell.font = Font(b=Truecolor="FF0000"size=16 
  18.     top_left_cell.alignment = Alignment(horizontal="center" 
  19.                                         vertical="center"
  20.     workbook.save(path)  
  21. if __name__ == "__main__":  
  22.     merge_style("merged_style.xlsx") 

在這里,您創(chuàng)建一個從 A2(左上角的單元格)開始到 G4 的合并單元格。然后設(shè)置單元格的值、邊框、填充、字體和對齊方式。

當(dāng)您運行此代碼時,您的新電子表格將如下所示:

您應(yīng)該花一些時間在合并的單元格上嘗試一些不同的樣式。例如,也許會想出比這里使用的灰色更好的漸變。

現(xiàn)在您已準(zhǔn)備好了解 OpenPyXL 的內(nèi)置樣式!

使用內(nèi)置樣式

OpenPyXL 帶有多種內(nèi)置樣式,您也可以使用。與其在本書中復(fù)制完整的內(nèi)置樣式列表,不如查看官方文檔,因為它將是樣式名稱的最新來源。

但是,值得注意的是其中一些樣式。例如,以下是您可以使用的數(shù)字格式樣式:

•  ‘Comma’

•  ‘Comma [0]’

•  ‘Currency’

•  ‘Currency [0]’•‘Percent’

您還可以應(yīng)用文本樣式。以下是這些樣式的列表:

•  ‘Title’

•  ‘Headline 1’

•  ‘Headline 2’

•  ‘Headline 3’

•  ‘Headline 4’

•  ‘Hyperlink’

•  ‘Followed Hyperlink’

•  ‘Linked Cell’

OpenPyXL 有幾個其他的內(nèi)置樣式組。您應(yīng)該查看文檔以了解支持的所有不同樣式。

現(xiàn)在您了解了一些可以使用的內(nèi)置樣式,是時候編寫一些代碼了!創(chuàng)建一個新文件并將其命名為 builtin_styls.py。然后輸入以下代碼: 

  1. # builtin_styles.py  
  2. from openpyxl import Workbook  
  3. def builtin_styles(path):  
  4.     workbook = Workbook()  
  5.     sheet = workbook.active  
  6.     sheet["A1"].value = "Hello"  
  7.     sheet["A1"].style = "Title"  
  8.     sheet["A2"].value = "from"  
  9.     sheet["A2"].style = "Headline 1"  
  10.     sheet["A3"].value = "OpenPyXL"  
  11.     sheet["A3"].style = "Headline 2"  
  12.     workbook.save(path)  
  13. if __name__ == "__main__":  
  14.     builtin_styles("builtin_styles.xlsx") 

在這里,您將三種不同的樣式應(yīng)用于三個不同的單元格。您可以使用“Title”,“Headline 1”和 “Headline 2”。

當(dāng)您運行此代碼時,您最終將擁有一個如下所示的電子表格:

與往常一樣,您應(yīng)該嘗試其他一些內(nèi)置樣式。嘗試它們是確定它們做什么以及它們是否適合您的唯一方法。

如果你想創(chuàng)造你的風(fēng)格怎么辦?這就是您將在下一節(jié)中介紹的內(nèi)容!

創(chuàng)建自定義命名樣式

您也可以使用 OpenPyXL 創(chuàng)建設(shè)計的自定義樣式。要創(chuàng)建您的樣式,您必須使用 NamedStyle 類。

NamedStyle 類采用以下參數(shù)(也包括默認值):

•  name=”Normal”

•  font=Font()

•  fill=PatternFill()

•  border=Border()

•  alignment=Alignment()

•  number_format=None

•  protection=Protection()

•  builtinId=None

•  hidden=False

•  xfId=None

您應(yīng)該始終為您的 NamedStyle 提供您自己的名稱以保持其唯一性。繼續(xù)創(chuàng)建一個新文件并將其命名為named_style.py。然后在其中添加以下代碼: 

  1. # named_style.py  
  2. from openpyxl import Workbook  
  3. from openpyxl.styles import Font, Border, Side, NamedStyle  
  4. def named_style(path):  
  5.     workbook = Workbook()  
  6.     sheet = workbook.active  
  7.     red = "00FF0000"  
  8.     font = Font(bold=Truesize=22 
  9.     thick = Side(style="thick"color=red 
  10.     border = Border(left=thickright=thicktop=thickbottom=thick 
  11.     named_style = NamedStyle(name="highlight"fontfont=font, borderborder=border)  
  12.     sheet["A1"].value = "Hello"  
  13.     sheet["A1"].style = named_style  
  14.     sheet["A2"].value = "from"  
  15.     sheet["A3"].value = "OpenPyXL"  
  16.     workbook.save(path)  
  17. if __name__ == "__main__":  
  18.     named_style("named_style.xlsx") 

在這里,您創(chuàng)建了一個 Font()、Side() 和 Border() 實例以傳遞給您的 NamedStyle()。創(chuàng)建自定義樣式后,您可以通過設(shè)置單元格的樣式屬性將其應(yīng)用于單元格。應(yīng)用自定義樣式的方式與應(yīng)用內(nèi)置樣式的方式相同!

您將自定義樣式應(yīng)用到單元格 A1。

當(dāng)您運行此代碼時,您將獲得一個如下所示的電子表格:

現(xiàn)在輪到你了!編輯代碼以使用 Side 樣式,這將更改您的邊框?;蛘邉?chuàng)建多個 Side 實例,以便您可以使單元格的每一側(cè)都是唯一的。使用不同的字體或添加自定義背景顏色!

總結(jié)

您可以使用 OpenPyXL 對單元格做很多不同的事情。本文中的信息使您能夠以優(yōu)美的方式格式化數(shù)據(jù)。

在本文中,您了解了以下主題:

•  使用字體

•  設(shè)置對齊方式

•  添加邊框

•  更改單元格背景顏色

•  將圖像插入單元格

•  樣式合并單元格

•  使用內(nèi)置樣式

•  創(chuàng)建自定義命名樣式

您可以利用在本文中學(xué)到的內(nèi)容制作精美的電子表格。您可以通過更改單元格的背景顏色或字體來突出特定的數(shù)據(jù)。您還可以使用內(nèi)置樣式更改單元格的格式。OpenPyXL 在處理單元格時非常強大和有價值。 

 

責(zé)任編輯:龐桂玉 來源: Python中文社區(qū)
相關(guān)推薦

2009-08-07 17:54:41

C#單元格數(shù)據(jù)

2021-09-09 08:58:32

Excel數(shù)據(jù)處理函數(shù)

2010-08-11 16:41:30

Flex DataGr

2009-07-28 03:44:00

GridViewRow

2015-01-15 16:34:31

iOS源碼單元格

2013-06-20 11:10:24

iOS開發(fā)UItableView單元格背景漸變

2009-07-27 16:46:07

DetailsView

2009-12-08 16:48:25

PHP類phpExce

2010-04-27 11:11:06

Oracle修改JTa

2020-02-19 14:55:20

開發(fā)技能代碼

2021-02-03 10:31:10

NPOIExcel樣式

2009-08-07 17:56:07

DataGrid的樣式

2025-02-05 09:39:00

2009-08-13 10:27:28

C#讀取Excel數(shù)據(jù)

2023-01-12 09:06:58

2021-07-14 09:18:19

Python插值算法

2022-09-30 15:35:47

json 文件前端開源

2010-01-28 15:54:19

Android單元測試

2009-05-14 14:28:26

信息化E-Cell用友

2017-01-12 14:52:03

JVMFinalRefere源碼
點贊
收藏

51CTO技術(shù)棧公眾號