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的单元格标记为红色。

相关推荐
程序员-小李13 分钟前
餐厅下单助手系统(Java+MySQL)
java·开发语言·mysql
开心工作室_kaic17 分钟前
springboot496基于java手机销售网站设计和实现(论文+源码)_kaic
java·开发语言·智能手机
像少年啦飞驰点、18 分钟前
SpringBoot + HttpSession 自定义生成sessionId
java·开发语言
诚威_lol_中大努力中25 分钟前
关于pytorch3d的安装
人工智能·pytorch·python
GISer_Jing31 分钟前
神经网络、深度学习、卷积神经网络
python
raysync88834 分钟前
替代传统FTP传输,镭速大数据传输系统实现安全高效数据流转!
开发语言·安全·php
mask哥35 分钟前
算法:LeetCode470_用Rand7()实现Rand10()_java实现
java·开发语言
cr.sheeper1 小时前
CTFHUB-web进阶-php
开发语言·php
小王子10241 小时前
数据结构与算法Python版 二叉查找树
数据结构·python·算法·二叉查找树
Clockwiseee1 小时前
PHP之伪协议
android·开发语言·php