Python使用设计模式中的建筑模式将数据写入Excel且满足条件内容标红

对于这个任务,适合使用"Builder"设计模式。Builder模式的主要目的是将对象的构建与其表示分离,以便相同的构建过程可以创建不同的表示。在这个情况下,我们需要一个构建器来逐行构建Excel表格,并根据给定的数据添加相应的统计结果。

下面是一个简单的示例,展示了如何使用Builder模式来实现这个功能:

python 复制代码
import pandas as pd

# 定义构建器类
class ExcelBuilder:
    def __init__(self, headers):
        self.headers = headers
        self.result_df = pd.DataFrame(columns=headers) # 定位DataFrame中下一个可用的行

    def add_row(self, data):
        self.result_df.loc[len(self.result_df)] = data

    def export_excel(self, filename):
        excel_writer = pd.ExcelWriter(filename, engine='xlsxwriter')
        self.result_df.to_excel(excel_writer, index=False, sheet_name='Sheet1')

        # 获取工作簿和工作表对象
        workbook = excel_writer.book
        worksheet = excel_writer.sheets['Sheet1']
        # 添加条件格式:将值大于25的单元格标红
        red_format = workbook.add_format({'bg_color': '#FFC7CE', 'font_color': '#9C0006'})
        worksheet.conditional_format('B2:D1000', {'type': 'cell', 'criteria': '>', 'value': 25, 'format': red_format})

        # excel_writer.save()
        excel_writer.close()
        print("Excel表格已生成")

# 使用构建器来构建Excel表格
headers = ['类别', '结果1', '结果2', '结果3']
excel_builder = ExcelBuilder(headers)

# 假设这是你的统计结果,以列表形式存储
statistics = [
    ['A', 10, 20, 30],
    ['B', 15, 25, 35],
    ['C', 20, 30, 40],
    ['D', 20, 30, "4a"]
]

# 逐行添加统计结果
for row in statistics:
    excel_builder.add_row(row)

# 导出Excel表格
excel_builder.export_excel('统计结果.xlsx')

运行结果

在这个示例中,我们首先定义了一个`ExcelBuilder`类,用于构建Excel表格。该类有三个方法:`init`用于初始化构建器,`add_row`用于逐行添加统计结果,`export_excel`用于将构建好的Excel表格导出到文件中。然后,我们使用构建器来创建Excel表格并逐行添加统计结果,最后导出到文件中。

复制代码
self.result_df = pd.DataFrame(columns=headers)这行代码是用于将数据逐行添加到DataFrame中的。让我一步一步解释:
  1. self.result_df 是一个DataFrame对象,它存储着我们的统计结果数据。

  2. len(self.result_df) 返回DataFrame中已有的行数。

  3. self.result_df.loc[len(self.result_df)] 是用来定位DataFrame中下一个可用的行,并将数据添加到这一行中。

  4. = data 则是将data变量中的数据赋值给这一行,这样就完成了一行数据的添加操作。

综合起来,这行代码的作用是将数据逐行添加到DataFrame中的下一个可用行中。

复制代码
worksheet.conditional_format('B2:D1000', {'type': 'cell', 'criteria': '>', 'value': 25, 'format': red_format})这行代码是用来设置 Excel 工作表中的条件格式的。让我解释一下参数的含义:
  • 'B2:D1000':这是条件格式应用的范围。它指定了要应用条件格式的单元格范围,从 B2 到 D1000。
  • {'type': 'cell', 'criteria': '>', 'value': 25, 'format': red_format}:这是条件格式的规则。具体含义如下:
    • 'type': 'cell':指定条件格式的类型为单元格。
    • 'criteria': '>':指定条件为大于。这意味着我们希望对满足大于某个值的单元格应用条件格式。
    • 'value': 25:这是条件的值。在本例中,条件是大于25的单元格将被标红。
    • 'format': red_format:这是应用的格式。red_format 是之前定义的红色格式,它指定了标红的背景色和字体颜色。

因此,这行代码的作用是将范围内数值大于25的单元格标记为红色。

相关推荐
一洽客服系统1 分钟前
网页嵌入与接入功能说明
开发语言·前端·javascript
傻啦嘿哟16 分钟前
Python爬虫动态IP代理报错全解析:从问题定位到实战优化
爬虫·python·tcp/ip
mit6.82417 分钟前
[Meetily后端框架] Whisper转录服务器 | 后端服务管理脚本
c++·人工智能·后端·python
zhangfeng113319 分钟前
python 数据分析 单细胞测序数据分析 相关的图表,常见于肿瘤免疫微环境、细胞亚群功能研究 ,各图表类型及逻辑关系如下
开发语言·python·数据分析·医学
Sylvia-girl25 分钟前
Java---IDEA
java·开发语言·intellij-idea
Z_W_H_32 分钟前
【Springboot】Bean解释
java·开发语言
柠檬豆腐脑38 分钟前
Trae-Agent 内置工具深度解析
python·llm·agent
ydl11281 小时前
机器学习基础知识【 激活函数、损失函数、优化器、 正则化、调度器、指标函数】
python·机器学习
L_autinue_Star2 小时前
手写vector容器:C++模板实战指南(从0到1掌握泛型编程)
java·c语言·开发语言·c++·学习·stl
chao_7892 小时前
CSS表达式——下篇【selenium】
css·python·selenium·算法