位置: 文档库 > Python > 文档下载预览

《使用Python绘制报表设置单元格颜色的实例代码.doc》

1. 下载的文档为doc格式,下载后可用word或者wps进行编辑;

2. 将本文以doc文档格式下载到电脑,方便收藏和打印;

3. 下载后的文档,内容与下面显示的完全一致,下载之前请确认下面内容是否您想要的,是否完整.

点击下载文档

使用Python绘制报表设置单元格颜色的实例代码.doc

《使用Python绘制报表设置单元格颜色的实例代码》

在数据分析和办公自动化场景中,使用Python生成带有颜色标记的Excel报表是常见需求。通过Python的第三方库(如openpyxl、xlsxwriter或pandas)可以高效实现这一功能。本文将详细介绍三种主流库的设置单元格颜色方法,并对比其适用场景。

一、openpyxl库实现单元格着色

openpyxl是操作.xlsx格式文件的常用库,支持单元格样式设置。其核心步骤包括:创建工作簿、选择工作表、设置单元格值、应用颜色样式。

1. 基础颜色设置

from openpyxl import Workbook
from openpyxl.styles import PatternFill

# 创建工作簿
wb = Workbook()
ws = wb.active

# 设置单元格值
ws['A1'] = "销售额"
ws['B1'] = 12500

# 创建填充样式(红色背景)
red_fill = PatternFill(start_color="FFFF0000", end_color="FFFF0000", fill_type="solid")
ws['B1'].fill = red_fill  # 应用到B1单元格

wb.save("sales_report.xlsx")

代码说明:PatternFill对象通过start_color和end_color参数定义颜色(十六进制格式),fill_type="solid"表示纯色填充。颜色值需去掉#号前缀。

2. 条件格式实现

当需要根据数据值动态着色时,可使用ConditionalFormatting:

from openpyxl.formatting.rule import CellIsRule
from openpyxl.styles import Font, PatternFill

wb = Workbook()
ws = wb.active

# 填充测试数据
for i in range(1, 11):
    ws[f'A{i}'] = i*1000

# 创建条件格式规则(大于5000显示绿色)
green_fill = PatternFill(start_color="FF00FF00", end_color="FF00FF00")
rule = CellIsRule(operator='greaterThan', formula=['5000'], fill=green_fill)

# 应用到A列
ws.conditional_formatting.add('A1:A10', rule)
wb.save("conditional_report.xlsx")

关键点:CellIsRule支持多种比较运算符(>,

3. 渐变颜色设置

openpyxl支持通过GradientFill实现渐变效果:

from openpyxl.styles import GradientFill

wb = Workbook()
ws = wb.active
ws['A1'] = "渐变示例"

# 创建双色渐变(红到黄)
gradient = GradientFill(stop=("FF0000", "FFFF00"))
ws['A1'].fill = gradient
wb.save("gradient_report.xlsx")

二、xlsxwriter库的高级着色功能

xlsxwriter在生成大型报表时性能更优,支持更丰富的格式选项。其着色方式分为直接设置和格式对象两种。

1. 直接单元格着色

import xlsxwriter

# 创建工作簿
workbook = xlsxwriter.Workbook('direct_color.xlsx')
worksheet = workbook.add_worksheet()

# 定义颜色格式(蓝色背景)
blue_format = workbook.add_format({'bg_color': '#0000FF'})

# 写入数据并应用格式
worksheet.write('A1', '蓝色单元格', blue_format)
workbook.close()

注意:xlsxwriter使用完整的十六进制颜色码(包含#号),且需通过add_format()预先创建格式对象。

2. 条件格式进阶

该库支持数据条、色阶等Excel高级功能:

workbook = xlsxwriter.Workbook('advanced_format.xlsx')
worksheet = workbook.add_worksheet()

# 填充数据
for i in range(10):
    worksheet.write(i, 0, i*500)

# 创建数据条格式(绿色渐变条)
data_bar = workbook.add_format({
    'bg_color': '#C6EFCE',
    'bar_color': '#63BE7B'
})

# 应用到A1:A10
worksheet.conditional_format('A1:A10', {
    'type': 'data_bar',
    'data_bar': data_bar
})
workbook.close()

扩展功能:支持图标集(如箭头、星级)、突出显示重复值等复杂条件格式。

3. 跨单元格合并着色

workbook = xlsxwriter.Workbook('merge_color.xlsx')
worksheet = workbook.add_worksheet()

# 合并单元格并设置格式
merge_format = workbook.add_format({
    'bold': True,
    'font_color': 'white',
    'bg_color': '#4472C4',
    'align': 'center'
})

worksheet.merge_range('A1:D1', '合并标题', merge_format)
workbook.close()

三、pandas与ExcelWriter的集成方案

当使用pandas处理数据时,可通过ExcelWriter无缝衔接着色功能。

1. 基础表格着色

import pandas as pd

# 创建DataFrame
df = pd.DataFrame({
    '产品': ['A', 'B', 'C'],
    '销量': [120, 85, 200]
})

# 创建ExcelWriter对象
writer = pd.ExcelWriter('pandas_color.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='销售', index=False)

# 获取工作簿和工作表对象
workbook = writer.book
worksheet = writer.sheets['销售']

# 定义格式
highlight = workbook.add_format({'bg_color': '#FFC7CE'})

# 应用到销量>100的单元格
for row in range(2, len(df)+2):  # 跳过标题行
    if df.iloc[row-2, 1] > 100:
        worksheet.write(row, 1, df.iloc[row-2, 1], highlight)

writer.close()

2. 整列着色优化

对于大数据量,建议使用条件格式而非逐个单元格设置:

writer = pd.ExcelWriter('optimized_color.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='优化', index=False)

workbook = writer.book
worksheet = writer.sheets['优化']

# 创建条件格式规则
format1 = workbook.add_format({'bg_color': '#FFEB9C'})
worksheet.conditional_format('B2:B4', {
    'type': 'cell',
    'criteria': '>=',
    'value': 100,
    'format': format1
})

writer.close()

3. 多表样式统一管理

# 创建多个DataFrame
df1 = pd.DataFrame({'区域': ['东', '西'], '利润': [45, 32]})
df2 = pd.DataFrame({'月份': ['1月', '2月'], '收入': [78, 92]})

# 定义公共格式
header_format = pd.ExcelWriter.book.add_format({
    'bold': True,
    'bg_color': '#D9E1F2'
})  # 需在ExcelWriter创建后获取book对象

# 正确写法(分步实现)
with pd.ExcelWriter('multi_sheet.xlsx', engine='xlsxwriter') as writer:
    book = writer.book
    header_fmt = book.add_format({'bold': True, 'bg_color': '#D9E1F2'})
    
    df1.to_excel(writer, sheet_name='区域', index=False)
    worksheet1 = writer.sheets['区域']
    worksheet1.set_row(0, None, header_fmt)  # 应用到标题行
    
    df2.to_excel(writer, sheet_name='月份', index=False)
    worksheet2 = writer.sheets['月份']
    worksheet2.set_row(0, None, header_fmt)

四、性能优化与最佳实践

1. 大数据量处理建议:

  • 优先使用xlsxwriter的conditional_format替代循环设置
  • 批量操作时关闭屏幕更新(xlsxwriter无此选项,openpyxl可考虑使用只读模式)
  • 避免在循环中频繁创建Format对象

2. 颜色选择原则:

  • 遵循WCAG 2.0对比度标准(文本与背景对比度≥4.5:1)
  • 使用色盲友好配色方案(如蓝橙对比)
  • 限制单表颜色种类(建议不超过5种)

3. 跨平台兼容性:

  • openpyxl适合修改现有文件
  • xlsxwriter生成新文件性能更优
  • pandas集成方案适合数据分析流程

五、完整案例:销售数据分析报表

import pandas as pd
import xlsxwriter

# 模拟数据
data = {
    '产品': ['手机', '笔记本', '平板', '耳机'],
    'Q1销量': [1200, 850, 620, 1500],
    'Q2销量': [1350, 920, 710, 1620],
    '增长率': [12.5, 8.2, 14.5, 8.0]
}
df = pd.DataFrame(data)

# 创建Excel文件
with pd.ExcelWriter('sales_analysis.xlsx', engine='xlsxwriter') as writer:
    # 写入数据
    df.to_excel(writer, sheet_name='季度分析', index=False)
    
    # 获取工作簿和工作表
    workbook = writer.book
    worksheet = writer.sheets['季度分析']
    
    # 定义格式
    header_fmt = workbook.add_format({
        'bold': True,
        'bg_color': '#4472C4',
        'font_color': 'white',
        'align': 'center',
        'valign': 'vcenter'
    })
    
    growth_high = workbook.add_format({
        'bg_color': '#C6EFCE',
        'font_color': '#006100'
    })
    
    growth_low = workbook.add_format({
        'bg_color': '#FFC7CE',
        'font_color': '#9C0006'
    })
    
    # 应用标题格式
    worksheet.set_row(0, None, header_fmt)
    
    # 设置增长率列条件格式
    for row in range(1, len(df)+1):
        growth = df.iloc[row-1, 4]
        if growth > 10:
            worksheet.write(row, 4, growth, growth_high)
        else:
            worksheet.write(row, 4, growth, growth_low)
    
    # 添加数据条到Q2销量列
    data_bar = workbook.add_format({
        'bg_color': '#F8CBAD',
        'bar_color': '#C00000'
    })
    worksheet.conditional_format(
        'D2:D5',
        {'type': 'data_bar', 'data_bar': data_bar}
    )

关键词:Python报表生成、单元格着色、openpyxl、xlsxwriter、pandas集成、条件格式、Excel自动化、数据可视化

简介:本文系统介绍了使用Python生成带颜色标记Excel报表的三种主流方案(openpyxl、xlsxwriter、pandas),涵盖基础单元格着色、条件格式、渐变效果、跨表样式管理等核心功能,提供完整代码示例和性能优化建议,适用于数据分析、财务报告、运营看板等业务场景。

《使用Python绘制报表设置单元格颜色的实例代码.doc》
将本文以doc文档格式下载到电脑,方便收藏和打印
推荐度:
点击下载文档