我想给测试的结果设置条件格式,搞了好久,根本找不到操作excel条件格式的模块。
由于我的excel后缀名是xls的,xlsxwriter和openpyxl模块都不支持xls。导致费劲巴拉的写了下面的程序:
另外xlwt没法直接写入已有excel内容,可以利用以下方法来写入。
程序如下(未写程序启动入口,只截取了部分代码):
class Write_Result(): #定义写入结果的类
def __init__(self, *args):
# 预定一个格式
style1 = xlwt.XFStyle()
style2 = xlwt.XFStyle()
font = xlwt.Font() # 字体
font.name = 'Arial'
font.bold = False
font.height = 200 # 字体大小*10
style1.font = font
style2.font = font
# 边框
borders = xlwt.Borders()
borders.top = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
borders.left = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
style1.borders = borders
style2.borders = borders
# cell颜色
pattern = xlwt.Pattern() # Create the Pattern
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 2 # 0=Black, 1=White, 2=Red, 3=Green, 4=Blue, 5=Yellow, 6=Magenta, 7=Cyan, 16=Maroon, 17=Dark Green, 18=Dark Blue, 19=Dark Yellow
style1.pattern = pattern # Add Pattern to Style
#结果写入
rb = xlrd.open_workbook(result_path, formatting_info=True) # 打开结果文件,并保持原格式
wb = copy(rb) # 拷贝一份结果文件, 由于openpyxl不支持xls
sheet = wb.get_sheet(0) # 第一个sheet
sheet.write(0, 2, Test_time) # 写入测试时间
######### 以下为判断结果条件,如果fail则标红(style1)
if float(Gain) < 30:
sheet.write(9, Result_Column, float(Gain), style1)
else:
sheet.write(9, Result_Column, float(Gain), style2)
if float(Power) < -25:
sheet.write(8, Result_Column, float(Power), style1)
else:
sheet.write(8, Result_Column, float(Power), style2)
if float(FreqErr) < -90 or float(FreqErr) > 90:
sheet.write(10, Result_Column, float(FreqErr),style1)
else:
sheet.write(10, Result_Column, float(FreqErr), style2)
if float(Ripple) < 0 or float(Ripple) > 3:
sheet.write(11, Result_Column, float(Ripple), style1)
else:
sheet.write(11, Result_Column, float(Ripple), style2)
wb.save(result_path)