我正在尝试将测试结果发送到Excel工作表。在所有现实中,它写得很糟糕。对于我发送到Excel工作表的每一条数据,我将样式附加到该命令,从而累加了传递4094的XF计数。例如,我有以下方法写入excel表。我希望包含状态值“PASSED”的行的文本颜色为绿色,红色表示状态值为“FAILED”。另外,我希望所有文本都是粗体,高度为240:
def writetolog(self, method, status, error, note):
if status == "PASSED":
col = xlwt.easyxf('font: colour green, bold 1, height 240')
elif status == "FAILED":
col = xlwt.easyxf('font: colour red, bold 1, height 240')
timestamp = str(datetime.now().strftime("%y-%m-%d %H:%M:%S.%f"))[:-4]
timesave = str(self.starttime.strftime("%y-%m-%d_%H-%M"))
try:
self.sheet.write(self.row, 0, status, col)
self.sheet.write(self.row, 1, method, col)
self.sheet.write(self.row, 2, note, col)
self.sheet.write(self.row, 3, str(error), col)
self.sheet.write(self.row, 4, timestamp, col)
self.wkbk.save('Log/Logfile_%s.xls' % timesave)
except Exception as e:
print "something went wrong in the write to log method"
print e
finally:
self.row += 1
这意味着每次我调用此方法(非常频繁)时,它都会以新的方式发送(只是,它几乎总是相同)。我需要一种方法来做到这一点,而不是一遍又一遍地发送相同的格式。
此处出现了类似的问题:xlwt set style making error: More than 4094 XFs (styles)
虽然它有答案,但它是用于压缩数据,这不是我的目标。对答案的评论说你不应该用相同的格式重复调用xlwt.easyxf,所以我试图弄清楚如何在不经常使用它的情况下进行操作。
那么,如何在不经常向excel发送新样式的情况下,使用以下标准写入Excel工作表:
- If the status value is "PASSED", the text color of the entire row is green
- If the status value is "FAILED", the text color of the entire row is red
- All data is bold
- All data is height 240
是否有办法通过xlwt设置整个文件的条件格式?
答案 0 :(得分:0)
希望将此添加为评论,但我没有足够的声誉。我一直在与类似的条件格式问题作斗争,并按照其他问题的建议设置style_compression = 2解决了它(不,它不会仅压缩数据的样式),但我可以看到,即使一个相对较小的电子表格现在有明显的处理延迟。
否则,您必须提前定义所有样式(即在循环之外),如果此处和那里只有一个格式参数不同,这可能会有点麻烦。