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

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

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


import pandas as pd# 定义构建器类
class ExcelBuilder:def __init__(self, headers):self.headers = headersself.result_df = pd.DataFrame(columns=headers) # 定位DataFrame中下一个可用的行def add_row(self, data):self.result_df.loc[len(self.result_df)] = datadef 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.bookworksheet = 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的单元格标记为红色。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/5049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GoF之工厂模式

GoF之工厂模式 文章目录 GoF之工厂模式每博一文案1. 简单说明“23种设计模式”1.2 介绍工厂模式的三种形态1.3 简单工厂模式(静态工厂模式)1.3.1 简单工厂模式的优缺点: 1.4 工厂方法模式1.4.1 工厂方法模式的优缺点: 1.5 抽象工厂模式1.6 抽象工厂模式的…

Apache Seata基于改良版雪花算法的分布式UUID生成器分析2

title: 关于新版雪花算法的答疑 author: selfishlover keywords: [Seata, snowflake, UUID, page split] date: 2021/06/21 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 关于新版雪花算法的答疑 在上一篇关于新版雪花算法的解析中…

C++初阶学习第四弹——类与对象(中)——刨析类与对象的核心点

类与对象(上):C初阶学习第三弹——类与对象(上)——初始类与对象-CSDN博客 前言: 在前面文章中,我们已经讲了类与对象的思想和类与对象的一些基本操作,接下来这篇文章我们将讲解以下…

探索Jellyfin:支持Android的自由开源的媒体服务器平台

探索Jellyfin:支持Android的自由开源的媒体服务器平台 I. 简介 A. 什么是Jellyfin? Jellyfin是一个自由开源的媒体服务器平台,旨在让用户能够自主管理和流式传输他们的媒体内容。与许多闭源的商业媒体服务器解决方案不同,Jelly…

Matlab各个版本介绍、区别分析及推荐

MATLAB,由美国MathWorks公司出品,是一款广泛应用的商业数学软件。自其诞生之初,MATLAB便以其强大的矩阵计算能力、灵活的编程环境以及广泛的应用领域,赢得了全球科研工作者和工程师的青睐。本文将详细介绍MATLAB的各个版本&#x…

ubuntu neo4j 下载与配置(一)

neo4j 官方下载页面 https://neo4j.com/deployment-center/#community 进入页面之后,往下滑 咱们在下载neo4j时,官方可能要咱们填写一下个人信息,比如:姓名组织结构邮箱等: 咱们可以观察一下,ne4j的下载链…

如何下载钉钉群直播回放:完整步骤解析

在当今快节奏的商业和教育环境中,钉钉群直播已经成为了沟通和学习的重要工具。直播结束后,很多观众都希望回顾内容,但却不知如何开始。如果你错过了实时直播,或者只是想再次观看精彩的演讲和讨论,那么下载钉钉群直播回…

基于ESP32—CAM物联网WIFI小车

一.功能概述 摄像头的画面可以实时的传输到,点灯科技APP的手机端,这样可以实时查看周围环境的状况,灯光不足,画面不清晰时可以打开灯光照明。手机端有左转、右转、前进、后退、停止的按钮。可以根据自己需要,来控制小车…

GitHub Copilot申请和使用

GitHub Copilot申请和使用 文章目录 前言一、申请二、使用总结 前言 之前已经成功进行了Github学生认证,今天邮件通知之前的学生认证已经通过。那么就去进行GitHub Copilot申请和使用。 前面准备:Github学生认证 一、申请 进入github的settings&#x…

Eclipse:-Dmaven.multiModuleProjectDirectory system propery is not set.

eclipse中使用maven插件的时候,运行run as maven build的时候报错 -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match. 可以设一个环境变量M2_HOME指向你的maven安装目录 M2_HOMED:\Apps\…

Deckset for Mac激活版:MD文档转幻灯片软件

Deckset for Mac是一款专为Mac用户打造的Markdown文档转幻灯片软件。它凭借简洁直观的界面和强大的功能,成为许多用户的心头好。 Deckset for Mac激活版下载 Deckset支持Markdown语法,让用户在编辑文档时无需分心于复杂的格式设置,只需专注于…

【docker 】Windows10安装 Docker

安装 Hyper-V Hyper-V 是微软开发的虚拟机,仅适用于 Windows 10。 按键: win键X ,选着程序和功能 在查找设置中输入:启用或关闭Windows功能 选中Hyper-V 点击确定 安装 Docker Desktop for Windows Docker Desktop 官方下载…

2024年 Java 面试八股文——Redis篇

目录 1、介绍下Redis Redis有哪些数据类型 难度系数:⭐ 2、Redis提供了哪几种持久化方式 难度系数:⭐ 3、Redis为什么快 难度系数:⭐ 4、Redis为什么是单线程的 难度系数:⭐ 5、Redis服务器的的内存是多大…

pkpmbs 建设工程质量监督系统 Ajax_operaFile.aspx 文件读取漏洞复现

0x01 产品简介 pkpmbs 建设工程质量监督系统是湖南建研信息技术股份有限公司一个与工程质量检测管理系统相结合的,B/S架构的检测信息监管系统。 0x02 漏洞概述 pkpmbs 建设工程质量监督系统 Ajax_operaFile.aspx接口处存在文件读取漏洞,未经身份认证的攻击者可以利用漏洞读…

助力企业部署国产云原生数据库 XSKY星辰天合与云猿生完成产品互兼容认证

近日,北京星辰天合科技股份有限公司(简称:XSKY 星辰天合)与杭州云猿生数据有限公司(简称“云猿生”)完成了产品互兼容认证,星辰天合企业级分布式统一数据平台 XEDP 与云猿生的开源数据库管控平台…

机器学习:逻辑回归

概念 首先,逻辑回归属于分类算法,是线性分类器。我们可以认为逻辑回归是在多元线性回归的基础上把结果给映射到0-1的区间内,hθ(x)越接近1越有可能是正例,反之,越接近0越有可能是负例。那么&am…

C# wpf 运行时替换方法实现mvvm自动触发刷新

文章目录 前言一、如何实现?1、反射获取属性2、定义替换方法3、交换属性的setter方法 二、完整代码1、接口2、项目 三、使用示例1、倒计时(1)、继承ViewModelBase(2)、定义属性(3)、属性赋值&am…

iOS 创建依赖其他开源库的开源库

参考文章(感激各位大神前路的明灯) 参考文章一 参考项目 整体流程 流程简介 1)使用pod命令行创建本地项目和git仓库并回答终端里的四个问题 2)编辑podspec文件 3)将需要开源的代码添加到Development Pods文件夹中&am…

iOS 实现类似抖音翻页滚动效果

这里是效果图 参考抖音的滚动效果,需要我们在结束拖动的时候,动画设置偏移量 这里有一个注意点,由于我们是在拖动结束的时候,手动改变tableview的偏移量, 改变了tableView 自身原有的的滚动效果,所以我们…

近几年视频取证、视频篡改检测技术发展现状及挑战

前言 本文主要搜集了视频取证各个子领域近几年的高影响因子/引用数的文章及其主要思想和做法,旨在分析目前视频篡改检测的发展现状与热点领域,文章中也融合了自己的一点看法和展望,欢迎感兴趣的同学和我多多沟通。 本文无论是文献搜集还是方…