zoukankan      html  css  js  c++  java
  • python 设置 excel 单元格颜色填充和字体效果

    0、import

    import openpyxl
    from openpyxl.styles import colors, fills, Font, PattrernFill

    1、查看填充类型

    print(dir(fills))

    fill_types = [ 'FILL_PATTERN_DARKDOWN', 'FILL_PATTERN_DARKGRAY', 'FILL_PATTERN_DARKGRID', 
                   'FILL_PATTERN_DARKHORIZONTAL', 'FILL_PATTERN_DARKTRELLIS', 'FILL_PATTERN_DARKUP', 
                   'FILL_PATTERN_DARKVERTICAL', 'FILL_PATTERN_GRAY0625', 'FILL_PATTERN_GRAY125', 
                   'FILL_PATTERN_LIGHTDOWN', 'FILL_PATTERN_LIGHTGRAY', 'FILL_PATTERN_LIGHTGRID', 
                   'FILL_PATTERN_LIGHTHORIZONTAL', 'FILL_PATTERN_LIGHTTRELLIS', 'FILL_PATTERN_LIGHTUP',
                   'FILL_PATTERN_LIGHTVERTICAL', 'FILL_PATTERN_MEDIUMGRAY', 'FILL_SOLID']
    
    fill_types = [eval(f'openpyxl.styles.fills.{fill_type}') for fill_type in fill_types]
    fill_types

     

    2 在 excel 中用不同的填充类型体验填充效果

    2.1、PatternFill( patternType, fgColor=colors.RED )

    # 创建 workbook 实例
    wb = openpyxl.Workbook()
    ws = wb.active
    
    # 合并单元格--------------------------------------------------------
    di = 2   # 每块合并 2 行
    dj = 2    # 每块合并 3 列
    merged_cells = []    # 合并区域中的单元格列表的列表
    
    for i in range(2, 27, 5):
        for j in range(2, 15, 4):
            # 合并单元格
            ws.merge_cells(start_row=i,
                           start_column=j,
                           end_row=i+di,
                           end_column=j+dj)
            # 添加单元格的列表
            merged_cells.append([ws.cell(row=i+ii, column=j+jj)
                              for ii in range(di+1)
                              for jj in range(dj+1)]
                            )
            
    # 创建 Font 实例 --------------------------------------------------------        
    font = Font(name='Arial',   # 字体
                sz=20,    # size  字号
                b=True,    # bold 加粗
                i=True,    # italic 倾斜
                underline='single',    #下划线
                strike='double',     # 删除线
                color=colors.BLACK,
               )
    
    
    # 对合并的单元格区域填充颜色、写入填充类型----------------------------------------
    for i, fill_type in enumerate(fill_types):
        # 创建 PatternFill 实例
        fill  = PatternFill(patternType=fill_type,
                            fgColor=colors.RED,
                           )
        for cell in merged_cells[i]:
            cell.fill = fill    # 对每一个合并区域中的单元格进行填充
    
        merged_cells[i][0].value = fill_type    # 在合并块中左上角单元格中写入值
        merged_cells[i][0].font = font
    
    
    # 保存工作表
    wb.save('test.xlsx')

    excel 效果:

     

    2.2、PatternFill( patternType, fgColor=colors.RED, bgColor=colors.GREEN)

    # 对合并的单元格区域填充颜色、写入填充类型----------------------------------------
    for i, fill_type in enumerate(fill_types):
        # 创建 PatternFill 实例
        fill  = PatternFill(patternType=fill_type,
                            fgColor=colors.RED,    # 前景色
                            bgColor=colors.GREEN    # 背景色
                           )
        for cell in merged_cells[i]:
            cell.fill = fill    # 对每一个合并区域中的单元格进行填充
    
        merged_cells[i][0].value = fill_type    # 在合并块中左上角单元格中写入值
        merged_cells[i][0].font = font
    
    
    # 保存工作表
    wb.save('test.xlsx')

    excel 效果:

     

  • 相关阅读:
    POJ2965(The Pilots Brothers' refrigerator)
    POJ1753(Flip Game)
    POJ3253(Fence Repair)
    山东理工大学的训练计划
    loutsScript 常用代码
    《大道至简》读后感
    2019暑第三周
    2019暑第二周
    2019暑第一周
    关于13组作品《TD tree》的使用感想
  • 原文地址:https://www.cnblogs.com/shanger/p/13176490.html
Copyright © 2011-2022 走看看