使用openpyxl的styles,实现写入值时加背景色

所用文件、数据和上一节代码中用的一致

本次直接贴代码

from openpyxl.styles import fillsfrom openpyxl import load_workbookclass DoExcel:    def __init__(self,filename):        ‘‘‘        :param filename: excel文件名        ‘‘‘        self.file = filename        self.wk = load_workbook(self.file)

def do_excel(self,sheetname):        ‘‘‘        :param sheetname: 工作簿名称        :return:        ‘‘‘        sheet = self.wk[sheetname]        max_row = sheet.max_row #最大行        max_column = sheet.max_column #最大列        data = [] #定义一个空列表,用于存储所有数据        for r in range(2,max_row+1):            subdata = {} #定义一个字典,用于存储每行数据            for c in range(1,max_column+1):                key = sheet.cell(1,c).value  #取第一行表头数据                subdata[key] = sheet.cell(r,c).value #字典格式,表头作为key            data.append(subdata)        return data    #将返回结果回写到excel文件单元格中    def write_back(self,sheet_name,row,col,value,color):        ‘‘‘        :param sheet_name: 工作簿名称        :param row: 写入行        :param col: 写入列        :param value: 写入值        :param color: 背景颜色        :return:        ‘‘‘        sheet = self.wk[sheet_name]        sheet.cell(row, col).value = value        sheet.cell(row, col).fill = fills.GradientFill(stop=(color, color))        self.wk.save(self.file)

if __name__ == ‘__main__‘:    file_name = "test.xlsx"    datas = DoExcel(file_name).do_excel(‘students‘)    i = 2    for data in datas:        score = int(data.get(‘考试分数‘))        if score >= 60:            t_pass = ‘及格‘            color = ‘FF0000‘        else:            t_pass = ‘不及格‘            color = ‘006030‘        DoExcel(file_name).write_back(‘students‘,i,5,t_pass,color)        i = i+1


原文地址:https://www.cnblogs.com/benben-wu/p/10119633.html

时间: 2024-11-01 15:56:17

使用openpyxl的styles,实现写入值时加背景色的相关文章

写入位置时发生訪问冲突

原因总结: 1:使用了未初始化的指针(未给指针分配空间) 2:使用了已经删除的指针 3.char str[]="ABCD".这个数组的存储空间是在栈中开辟的(在栈中开辟了一个数组?) char *str="ABCD".str指向的是静态存储区,"ABCD"是位于常量区的,指针str仅仅是指向了这个位置(仅仅在栈中开辟了一个指针内存?),那么这些值就不能被改动. 而上面数组中,要注意的是把字符拷贝到数组的元素中.那么就是能够被随意改动的. 例: c

运维规范:执行写入操作时,一定不要开两个分别连入不同主机的securCRT窗口

运维规范:执行写入操作时,一定不要开两个分别连入不同主机的securCRT窗口. 本文说的是写入操作,若是查询操作,能只打开一个主机的securCRT窗口,就不要打开两个主机的securCRT窗口. 由于ogg复制环境中需要单表数据重新同步的关系,我经常在生产环境的ogg源头库中expdp,在ogg目的端库中impdp 当我在生产环境的ogg源头库中expdp完成并scp dmp 文件到目的端os之后,我会立即exit退出ogg源头的securCRT窗口. 原因是我怕impdp之前的drop t

使用$_GET["action"]取值时必须先判断action是否存在。

使用$_GET["action"]取值时必须先判断action是否存在. if (isset($_GET["action"]) && $_GET["action"]=="register"){ //获取一个键值对判断提交数据是否成功 echo "提交数据成功!"; exit(); ($_POST[ ]同上)

select 取的是session里面的值时

原来是写了一个select标签,然后用js循环取出来,发现问题是本来嵌在页面右边的页面整个弹出来, 后来改成html:optionsCollection就好了: 效果图: select 取的是session里面的值时

C#使用读写锁三句代码简单解决多线程并发写入文件时提示“文件正在由另一进程使用,因此该进程无法访问此文件”的问题

在开发程序的过程中,难免少不了写入错误日志这个关键功能.实现这个功能,可以选择使用第三方日志插件,也可以选择使用数据库,还可以自己写个简单的方法把错误信息记录到日志文件. 选择最后一种方法实现的时候,若对文件操作与线程同步不熟悉,问题就有可能出现了,因为同一个文件并不允许多个线程同时写入,否则会提示“文件正在由另一进程使用,因此该进程无法访问此文件”. 这是文件的并发写入问题,就需要用到线程同步.而微软也给进程同步提供了一些相关的类可以达到这样的目的,本文使用到的 System.Threadin

问题-Ctrl+F7跟踪值时提示“Function to be called, TGGLPolyhedron3d.AsString, was eliminated by linker”

问题现象:F9运行程序后,选中一个对象,Ctrl+F7跟踪值时,调用对象的某一个方法提示“Function to be called, TGGLPolyhedron3d.AsString, was eliminated by linker”. 问题原因:具体原因不明(可能是因为调用的方法从未被使用过,所以DLL中就把这个方法去掉了). 问题处理:在这个对象之后在代码编辑界面,写一行代码调用一下这个方法就可以了.

写入位置时发生访问冲突

  写入位置时发生访问冲突 原因总结如下: 1:使用了未初始化的指针(未给指针分配空间) 2:使用了已经删除的指针 总之是指针未初始化以及越界被删除的原因 例: char* str = "ABCD"; //char str[] = "ABCD";可以解决 strrev(str); char * strrev(char str[]){ int j, i; for(i = 0, j = strlen(str) - 1; i < j; i++, j--){ char

JsonResult作为Action返回值时的错误

JsonResult作为Action返回值时的错误 System.InvalidOperationException: This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to

model中设置默认值时 ,使用 lambda 与否的差别以及datetime的默认值方法

'date': '2013-01-01'  #固定值 'date': time.strftime('%Y-%m-%d')  #启动时候的值 'date': lambda *a: time.strftime('%Y-%m-%d')  #当前日期   6.1后,官方建议date/datetime的默认值的写法是(能解决时区问题): 'birthdate': fields.date.context_today, 'create_at': fields.datetime.now, model中设置默认值