python之如何使用openpyxl設(shè)置單元格樣式
引言
在pandas保存多個(gè)excel表格的時(shí)候,有時(shí)單元格中的內(nèi)容很多,預(yù)覽的時(shí)候不方便查看,這時(shí)候我們需要修改單元格的寬高及換行顯示
下面直接來(lái)看代碼
import pandas as pd
import datetime
df = pd.read_excel('測(cè)試.xlsx')
grouped = df.groupby(['部門'])
current_time = datetime.datetime.now()
current_time = current_time.strftime('%m%d')
print(current_time)
name_list = []
for dtype,group in grouped:
if "/" in dtype:
dtype = dtype.replace("/","-")
group.to_excel(f"./demand/{dtype}{current_time}.xlsx",index = False)
name_list.append(f"./demand/{dtype}{current_time}.xlsx")這段代碼先將測(cè)試表格拆分為多個(gè)表格,并且拿到各部門的表格name。
def format_xlsx(file_path):
import os
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
from openpyxl.styles import PatternFill, Alignment, Side, Border
from openpyxl.styles import Font, Color, colors, Border, Side, Alignment
wb = load_workbook(file_path)
# 打開工作表
ws = wb.active
#設(shè)置單元格邊框的線條樣式
border_set = Border(left=Side(style='thin', color=colors.BLACK), # 左邊框
right=Side(style='thin', color=colors.BLACK), # 右邊框
top=Side(style='thin', color=colors.BLACK), # 上邊框
bottom=Side(style='thin', color=colors.BLACK)) # 下邊框
#設(shè)置單元格內(nèi)容對(duì)齊方式
for i in ws:
for j in i:
# print(j,type(j))
j.alignment = Alignment(horizontal='center', vertical='center',wrapText = True)
j.border = border_set
#設(shè)置單元格寬高
width = 50
height = 80
# height = width * (2.2862 / 0.3612)
for i in range(2, ws.max_row+1):
ws.row_dimensions[i].height = height
for i in range(1, ws.max_column+1):
ws.column_dimensions[get_column_letter(i)].width = width
wb.save(file_path)然后定義一個(gè)format函數(shù),來(lái)對(duì)sheet頁(yè)進(jìn)行格式化。
ws為worksheet,即單個(gè)sheet頁(yè),嵌套遍歷時(shí),i為列遍歷的整列[“A”]、[“B”]、[“C”]…然后再行遍歷,得到的就是[“A1”][“B1”][“C1”]…等所有的單元格cell。
這里設(shè)置了三個(gè)參數(shù),水平居中”horizontal“,垂直居中”vertical”,還有一個(gè)換行顯示“wrapText”。
然后是設(shè)置單元格的寬高
分別循環(huán)去獲取有數(shù)據(jù)的單元格的最大長(zhǎng)度,注意:這里的openpyxl庫(kù)循環(huán)遍歷時(shí)首個(gè)元素的下標(biāo)為1而不是0,而行我們是從第二行開始設(shè)置的,原因是表頭一般都會(huì)單獨(dú)設(shè)置醒目樣式以區(qū)分表體。
下面是操作截圖
初始表

生成表



總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于python pycharm中輸出的內(nèi)容不全的解決辦法
這篇文章主要介紹了關(guān)于python pycharm中輸出的內(nèi)容不全的解決辦法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
pycharm中:OSError:[WinError?1455]頁(yè)面文件太小無(wú)法完成操作問(wèn)題的多種解決方法
這篇文章主要給大家介紹了關(guān)于pycharm中:OSError:[WinError?1455]頁(yè)面文件太小無(wú)法完成操作問(wèn)題的多種徹底解決方法,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02
Python操作JSON文件的知識(shí)點(diǎn)整理
Python?提供了內(nèi)置的?json?模塊來(lái)處理?JSON?格式的文件。該模塊主要分為讀取和寫入?JSON?文件。本文主要為大家整理了一些Python操作JSON文件的知識(shí)點(diǎn),需要的可以參考一下2023-01-01
Python中將嵌套列表扁平化的多種實(shí)現(xiàn)方法
在Python編程中,我們常常會(huì)遇到需要將嵌套列表(即列表中包含列表)轉(zhuǎn)換為一個(gè)一維的扁平列表的需求,本文將給大家介紹了多種實(shí)現(xiàn)這一目標(biāo)的方法,需要的朋友可以參考下2025-07-07
python 尋找優(yōu)化使成本函數(shù)最小的最優(yōu)解的方法
這篇文章主要介紹了python 尋找優(yōu)化使成本函數(shù)最小的最優(yōu)解的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
Pandas聚合運(yùn)算和分組運(yùn)算的實(shí)現(xiàn)示例
這篇文章主要介紹了Pandas聚合運(yùn)算和分組運(yùn)算的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10

