使用pandas.ExcelWriter进行条件格式设置:无法手动更改格式并无法使用openpyxl重新读取格式

时间:2019-05-08 09:22:32

标签: python excel pandas openpyxl xlsxwriter

我正在使用pandas.ExcelWriter将pandas数据框另存为Excel,并使用conditional_format将某些单元格格式化为红色。

格式化成功,但是随后我无法使用openpyxl.load_workbook读回格式化信息:当我询问已上色的单元格的颜色时,答案始终是“无”。请参见下面的代码,该代码显示以下内容(注意最后一行中的“ rgb = None”):

Cell value: apple
Font info:
<openpyxl.styles.fonts.Font object>
Parameters:
name='Calibri', charset=None, family=2.0, b=False, i=False, strike=None, outline=None, shadow=None, condense=None, color=<openpyxl.styles.colors.Color object>
Parameters:
auto=None, tint=0.0, type='theme', theme=1, rgb=None, indexed=None, extend=None, sz=11.0, u=None, vertAlign=None, scheme='minor'

此外,该单元格的颜色似乎已锁定(即,保存Excel后我无法手动更改它)。 有解决这些问题的方法吗?

非常感谢!

(注意。我正在使用Python 3.5,pandas == 0.22.0,openpyxl == 2.6.2)

    import pandas as pd
    from openpyxl import load_workbook

    # SAVING SAMPLE EXCEL FILE WITH ONE CELL COLORED IN RED

    writer = pd.ExcelWriter('MyExcel.xlsx', engine = 'xlsxwriter')

    df = pd.DataFrame(columns = ['FRUIT', 'ANIMAL'], data = [['apple', 'cow'], ['banana', 'cat'], ['pear', 'zebra']])

    df.to_excel(writer, sheet_name = 'sheet_1', header = True, index = False)

    fmt = writer.book.add_format({'font_color' : 'red'})
    writer.sheets['sheet_1'].conditional_format('A2', {'type' : 'unique', 'format' : fmt})

    writer.close()

    # READING FORMATTING INFORMATION BACK

    wb = load_workbook("MyExcel.xlsx", read_only = True)
    ws = wb['sheet_1']

    print("Cell value: {}\nFont info:\n{}".format(ws.cell(2,1).value,     ws.cell(2,1).font))

    wb.close()

***更新:将格式代码更改为

 cell_format = writer.book.add_format()
 cell_format.set_font_color('red')
 writer.sheets['sheet_1'].write('A2', 'apple', cell_format)

解决了问题。

0 个答案:

没有答案