我正在使用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)
解决了问题。