StyleFrame怎么可以保留原来的格式不被修改

我用pandas处理一个Excel后,里面是有些单元格增加了背景色,然后用StyleFrame修改样式后保存完成,原来的背景色那些都没有了,用StyleFrame怎么可以保留原来的格式不被修改呢,请指导

使用StyleFrame处理Excel时,会覆盖原有的单元格格式设置,包括背景色。要保留原有格式,需要在应用StyleFrame样式前先读取原有格式,然后在设置StyleFrame样式时将原格式合并进去。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7567724
  • 除此之外, 这篇博客: Python EXCEL格式编辑函数StyleFrame使用大全中的 按照此方法,肯定不会报错,如果报错,请检查数据或者列名是否有问题(列名千万不要重复,否则肯定报错) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • Styler(bg_color=None, bold=False, font=utils.fonts.arial, font_size=12, font_color=None, number_format=utils.number_formats.general, protection=False,
    underline=None, border_type=utils.borders.thin, horizontal_alignment=utils.horizontal_alignments.center, vertical_alignment=utils.vertical_alignments.center,
    wrap_text=True, shrink_to_fit=True, fill_pattern_type=utils.fill_pattern_types.solid, indent=0, comment_author=None, comment_text=None, text_rotation=0)
    
    import pandas as pd
    from styleframe import StyleFrame, Styler, utils
    a=[1,2,3]
    b=[4,5,6]
    c=zip(a,b)
    d=["时间",
       "电流"]
    data=pd.DataFrame(c, columns=d)
    #也可以这样
    df = pd.read_excel('wendang6.xlsx')
    print(type(df))
    #先把转成StyleFrame样式
    sf = StyleFrame(df)
    
    #把所有的列
    sf.apply_column_style(cols_to_style=column,
                          styler_obj=Styler(font="Times New Roman",font_color='red',shrink_to_fit=True,wrap_text=True),
                          style_header=False)
    
    #设置行的样式
    # sf.apply_style_by_indexes(indexes_to_style=sf[sf['时间']==1],
    #                           # 要设置样式的行,sf[sf[‘col1’] = 20]表示设置col1列等于20的行
    #                           # styler_obj=Styler(font="Times New Roman", font_color='green', shrink_to_fit=True,
    #                           #                   wrap_text=True),
    #                           # cols_to_style=d)
    #                           cols_to_style=d,styler_obj=Styler(font_color="green"))
    
    #设置好行高以后就存储
    sf.set_column_width(columns = d,width=20)#这个函数是把表所有的列都设置成20
    sf.set_column_width_dict(col_width_dict={"时间": 10, "电流": 10})#这个就是把某些列变成
    sf.to_excel("235.xlsx").save()
    

    至于其他的就看这个网址把

当使用StyleFrame库修改Excel样式时,默认情况下它会覆盖原有的样式。如果您希望保留原有单元格的背景色,可以在修改样式之前先将原有样式保存下来,然后在应用新样式后再恢复回去。

以下是一个示例代码片段,展示了如何使用openpyxl库和StyleFrame库来保留原有单元格的背景色:

import openpyxl
from StyleFrame import StyleFrame

# 读取原始Excel文件
sf = StyleFrame.read_excel('input.xlsx')

# 保存原有样式
original_styles = sf.data_df.style.copy()

# 修改样式
# ... 在这里进行样式修改 ...

# 恢复原有样式(包括背景色)
sf.data_df.style = original_styles

# 保存到输出Excel文件
sf.to_excel('output.xlsx', index=False)

在上述代码中,我们首先使用StyleFrame.read_excel()函数读取原始的Excel文件并存储在sf变量中。然后,我们使用.style.copy()方法将原有样式保存到original_styles变量中。

接下来,您可以在适当的位置修改样式。最后,通过将sf.data_df.style赋值为original_styles,将原有样式恢复到DataFrame中的每个单元格。

最后,使用sf.to_excel()方法将DataFrame保存到输出Excel文件中。

这样,您应该能够在使用StyleFrame修改样式后保留原有的单元格背景色。请根据您的具体需求进行适当的修改。