用python如何绘制表格不同颜色的excel

  • Post category:Python

那我来讲解一下如何用Python绘制表格不同颜色的Excel文档。

首先我们需要安装一个叫做openpyxl的Python库,它可以帮助我们操作Excel文件。可以使用pip命令进行安装:

pip install openpyxl

接下来就可以开始编写代码了。下面给出一个完整的示例代码:

import openpyxl
from openpyxl.styles import PatternFill

# 创建一个新的Excel文件
wb = openpyxl.Workbook()

# 选择第一个工作表
ws = wb.active

# 设置表头
ws['A1'] = '姓名'
ws['B1'] = '年龄'

# 创建一个绿色的填充
green_fill = PatternFill(start_color='00FF00',
                         end_color='00FF00',
                         fill_type='solid')

# 设置第一行的背景为绿色
for cell in ws[1]:
    cell.fill = green_fill

# 填写数据
ws['A2'] = '张三'
ws['B2'] = 20
ws['A3'] = '李四'
ws['B3'] = 25

# 给第二行设置黄色背景
yellow_fill = PatternFill(start_color='FFFF00',
                          end_color='FFFF00',
                          fill_type='solid')
ws['A2'].fill = yellow_fill
ws['B2'].fill = yellow_fill
ws['A3'].fill = yellow_fill
ws['B3'].fill = yellow_fill

# 保存Excel文件
wb.save('example.xlsx')

以上代码演示了如何创建一个包含两行数据的Excel文件,并将表头的背景颜色设置为绿色,第二行的背景颜色设置为黄色。

另外还可以加入一些循环逻辑,自动根据数据的行数设置不同的背景颜色。下面是一个示例代码:

import openpyxl
from openpyxl.styles import PatternFill

# 创建一个新的Excel文件
wb = openpyxl.Workbook()

# 选择第一个工作表
ws = wb.active

# 设置表头
ws['A1'] = '姓名'
ws['B1'] = '年龄'

# 填写数据
data = [
    ['张三', 20],
    ['李四', 25],
    ['王五', 30]
]

# 分别设置绿、黄、绿三种填充
green_fill = PatternFill(start_color='00FF00',
                         end_color='00FF00',
                         fill_type='solid')
yellow_fill = PatternFill(start_color='FFFF00',
                          end_color='FFFF00',
                          fill_type='solid')
ws['A1'].fill = green_fill
ws['B1'].fill = green_fill

# 循环写入数据并设置不同的填充
for i, row in enumerate(data):
    ws.cell(row=i+2, column=1, value=row[0]).fill = green_fill if i % 2 == 0 else yellow_fill
    ws.cell(row=i+2, column=2, value=row[1]).fill = green_fill if i % 2 == 0 else yellow_fill

# 自适应列宽
for col in ws.columns:
    max_length = 0
    column = col[0].column_letter
    for cell in col:
        try:
            if len(str(cell.value)) > max_length:
                max_length = len(str(cell.value))
        except:
            pass
    adjusted_width = (max_length + 2)
    ws.column_dimensions[column].width = adjusted_width

# 保存Excel文件
wb.save('example2.xlsx')

以上代码演示了如何根据数据行数的奇偶性设置不同的背景颜色,并自适应列宽。最终生成的Excel文件为example2.xlsx。

希望以上示例能够帮助到你。