首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于if语句的Xlsxwriter更改格式颜色

基于if语句的Xlsxwriter更改格式颜色
EN

Stack Overflow用户
提问于 2018-08-06 23:04:32
回答 1查看 3K关注 0票数 2

我有一个python脚本来创建一个报告。

我想用a颜色划a,然后再用b颜色划b,.我可以创建一个变量formatA = workbook.add_format({'bg_color': 'red'})formatB = workbook.add_format({'bg_color': 'blue'})等等。

但是,我认为做format = workbook.add_format({'bg_color': 'red'})会更容易,然后当我遍历我想要使用的行时,执行format.set_bg_color('blue')并应用它。

但是,它不改变背景颜色,只对每一行应用蓝色。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-07 00:45:44

关于格式的xlsxwriter文档页中的修改格式部分很好地解释了这个问题(链接在这里)。从本质上讲,它解释了不可能使用一种格式,然后重新定义它,以便在以后使用,因为一种格式被应用于单元格的最终状态。

也许可以考虑创建一个创建格式的函数。然后,当您想要更改单元格颜色或添加到该函数中的其他格式时,可以根据需要调用此函数。

下面我给出了一个例子,说明你是如何做到这一点的。

代码语言:javascript
复制
import pandas as pd

df = pd.DataFrame({'col_a': ['a','b','c'],
                  'col_b': [1,2,3]})



def format_function(bg_color = 'red'):
    global format
    format=workbook.add_format({
    'bg_color' : bg_color
    })                

writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook=writer.book
worksheet = writer.sheets['Sheet1']



# Setting the format but not setting the row height.
format_function(bg_color = 'red')
worksheet.set_row(1, None, format)
format_function(bg_color = 'blue')
worksheet.set_row(2, None, format)
format_function(bg_color = 'pink')
worksheet.set_row(3, None, format)


writer.save()

预期产出:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51716723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档