Python批量美化excel的格式

Posted 卖山楂啦prss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python批量美化excel的格式相关的知识,希望对你有一定的参考价值。

作为例子,用前面爬取的携程游记数据,如下

只有第一个sheet,我提前把一些格式设置好,比如列宽啊,居中啊…

后面的,都是没有任何格式的,这里只有3个sheet表,但实际中可能遇到上百个这样的

最终效果:


代码:

xlwings能够在操作excel的时候,你可以实时看到效果

import xlwings as xw
from multiprocessing.dummy import Pool
from functools import partial


wb = xw.Book("携程.xlsx")  # 建立于sample.xlsx文件的连接
sheet = wb.sheets["sheet"] #打开sample.xlsx文件的sheet1
info = sheet.used_range
nrows = info.last_cell.row
ncolumns = info.last_cell.column



#设置第一个sheet,列宽提前弄好,后面的sheet都是用这个列宽
col_name = sheet[0,0:ncolumns].value
col_width = []
for i in range(ncolumns):
    col_width.append(sheet[0,i].column_width)
print('列宽:'+str(col_width))
print('列名:'+str(col_name))


def beautiful_sheet(sheet_name,col_name,col_width):
    info = sheet_name.used_range
    nrows = info.last_cell.row
    ncolumns = info.last_cell.column
    # 自定义列名
    sheet_name[0,0:ncolumns].value = col_name #更改标题行
    # 自定义边框
    # Borders(8)上边框、Borders(9)下边框、Borders(10)左边框、Borders(11)右边框
    # Borders(12)内横边框、Borders(11)内纵边框
    sheet_name[0:nrows,0:ncolumns].api.Borders(12).LineStyle = 2 #设置单元格横边框为细框线
    sheet_name[0:nrows,0:ncolumns].api.Borders(11).LineStyle = 2 #设置单元格竖边框为细框线
    # 自定义字体
    sheet_name[0:nrows,0:ncolumns].api.Font.Name = '微软雅黑'# 设置字体格式为微软雅黑
    sheet_name[0,0:ncolumns].api.Font.Size = 12# 设置字体格式为微软雅黑
    # 加粗
    sheet_name[0,0:ncolumns].api.Font.Bold = True
    # 居中
    sheet_name[0:nrows,0:ncolumns].api.HorizontalAlignment = -4108  #设置字体居中
    # 对某一列进行处理
    col_3 = sheet_name[1:nrows,3].value
    sheet_name[1:nrows,3].options(transpose=True).value = [i if i is None else i.replace('天','') for i in col_3]
    # 自定义列宽
    for i,item in enumerate(col_width): #列遍历,根据sample.xlsx中的列宽进行调整
        sheet_name[0,i].column_width = item
    # 颜色
    for i in range(nrows): ##行遍历
        if i==0:
            #设置标题背景颜色格式
            sheet_name[i, 0:ncolumns].color = [135,206,250]
        elif i%2 ==0:
            # 设置偶数行背景颜色
            sheet_name[i,0:ncolumns].color = [255,182,193]
    return None
    


# 批量应用
sheets_name= [st.name for st in wb.sheets]
# 固定参数
func = partial(beautiful_sheet, col_name=col_name,col_width=col_width)
for i in sheets_name:
    func(wb.sheets[i])

当然,还可以做更多其他操作

以上是关于Python批量美化excel的格式的主要内容,如果未能解决你的问题,请参考以下文章

excel2013数字格式也能美化表格

Excel表格编辑格式化与样式美化视频课程

excel套用单元格样式进行美化

python如何批量对文件夹里所有excel特定行进行删除?

Python3 关于excel 文件格式xls之读取写入和追加

Excel如何直接应用主题效果美化工作表