python实现xlwt xlrd 指定条件给excel行添加颜色

  • Post category:Python

以下是关于如何使用Python实现给Excel表格的行添加颜色的完整实例教程。

准备工作

首先,需要安装xlwtxlrd这两个Python的Excel操作库,可以使用以下命令进行安装:

pip install xlwt xlrd

此外,还需要下载样例Excel文件,并将其保存到本地。

代码实现

import xlwt 
from xlrd import open_workbook 

input_file = 'xlwt-example.xls'
output_file = 'output.xls'

# 定义一些样式
style0 = xlwt.easyxf('font: name Times New Roman, color-index black, bold on', num_format_str='#,##0.00')
style1 = xlwt.easyxf('',color='red')
style2 = xlwt.easyxf('',color='blue')

# 打开Excel文件
rb = open_workbook(input_file, formatting_info=True) 
wb = xlwt.Workbook() 
sheet_names = rb.sheet_names() 

# 遍历其中的每个工作表
for sheet_index in range(len(sheet_names)):
    sheet = wb.add_sheet(sheet_names[sheet_index])

    # 遍历每一行
    for row_index in range(rb.sheet_by_index(sheet_index).nrows):

        # 获取行中每个单元格的值
        cols = rb.sheet_by_index(sheet_index).row_values(row_index)

        # 判断条件,如果满足条件1,就使用style1样式标记这一行
        if cols[1] >= 50:
            for col_index, col_value in enumerate(cols):
                sheet.write(row_index, col_index, col_value, style1)

        # 判断条件,如果满足条件2,就使用style2样式标记这一行
        elif cols[1] < 50 and cols[1] >= 30:
            for col_index, col_value in enumerate(cols):
                sheet.write(row_index, col_index, col_value, style2)

        # 其他行使用默认的style0样式
        else:
            for col_index, col_value in enumerate(cols):
                sheet.write(row_index, col_index, col_value, style0)

# 保存输出文件
wb.save(output_file)

在上述代码中,首先定义了三种样式:style0是默认样式,style1style2是标记行时所使用的两种不同的样式。然后使用open_workbook函数打开Excel文件,使用xlwt.Workbook创建一个新的Excel文件并遍历原始Excel文件中的每个工作表。接着,遍历每个工作表中的每一行,使用rb.sheet_by_index(sheet_index).row_values(row_index)获取该行中每个单元格的值。根据定义好的规则,使用三种不同的样式标记每行,并将更新后的Excel文件保存到本地。

以下是两个示例说明:

示例1

假设样例Excel文件是一张学生考试成绩单,第2列是总分,你需要将总分大于等于60的行标记为红色。

在上述Python代码中的第17行中加入以下代码即可:

if cols[1] >= 60:
    for col_index, col_value in enumerate(cols):
        sheet.write(row_index, col_index, col_value, style1)

示例2

假设样例Excel文件是一份商品销售清单,第2列是销售数量,你需要将销售数量大于等于50的行标记为蓝色,销售数量大于等于30但小于50的行标记为绿色,其他行标记为红色。

在上述Python代码中的第17-22行中加入以下代码即可:

if cols[1] >= 50:
    for col_index, col_value in enumerate(cols):
        sheet.write(row_index, col_index, col_value, style2)
elif cols[1] < 50 and cols[1] >= 30:
    for col_index, col_value in enumerate(cols):
        sheet.write(row_index, col_index, col_value, style3)
else:
    for col_index, col_value in enumerate(cols):
        sheet.write(row_index, col_index, col_value, style1)

完成以上改动后,运行Python程序即可实现给Excel表格的行添加颜色的功能。

希望这个教程对你有所帮助。