openpyxl 有问题,我是不是漏掉了一些关键的东西?

问题描述 投票:0回答:0

我上次运行脚本时没有更新任何库,简而言之应该解析一个巨大的 CSV 文件,对其进行一些统计并绘制一些选择数据,然后将其编译为 *.xlsx 文件,我正在使用模块“openpyxl”来添加条件格式和图表作为图像,出于某种原因,条件格式和图像都消失了,就像程序本身绘制它们并将它们导入工作簿对象中一样,并添加条件格式规则,不会引发任何错误或警告,但是当我打开导出文件时,它们就不存在了……除了 pandas 自动为列和索引标签添加的条件格式……

我尝试安装旧版本的 pandas、openpyxl 甚至 xlsxwriter,并使用它来代替但没有骰子...... 我尝试在保存之前检查工作簿和工作表对象,数据就在那里,正如我所料,似乎没有保存...

我尝试交替使用 writer.save() 和 writer.close() 方法,但结果是一样的……

对于上下文,这里是添加图像的代码:

importedimage = openpyxl.drawing.image.Image(os.path.join(imgfolder_dir, element))
importedimage.anchor = column_indexer[int(str(ix).replace("_", "")) - 1] + "1"
importedimage.width = 900
importedimage.height = 360
worksheet.add_image(importedimage)

注意我使用的方法:

worksheet.add_image(importedimage)

我多年来一直使用这个确切的功能并且一直有效。

这是添加条件格式的代码:

toplimit 和 bottomlimit 的值取决于单元格应为绿色还是红色




REDTEXT = openpyxl.styles.Font(size=14, bold=False, color="9C0006")
REDBLOCK = openpyxl.styles.PatternFill(start_color="FFC7CE", end_color="FFC7CE", fill_type="solid")

# YELLOWTEXT = openpyxl.styles.Font(size=14, bold=False, color="9C6500")
# YELLOWBLOCK = openpyxl.styles.PatternFill(start_color="FFEB9C", end_color="FFEB9C", fill_type="solid")

GREENTEXT = openpyxl.styles.Font(size=14, bold=False, color="006100")
GREENBLOCK = openpyxl.styles.PatternFill(start_color="C6EFCE", end_color="C6EFCE", fill_type="solid")




GRAPHS.conditional_formatting.add(format_cell, cfRule=openpyxl.formatting.rule.CellIsRule(operator="greaterThanOrEqual", formula[toplimit], fill=REDBLOCK, font=REDTEXT))

GRAPHS.conditional_formatting.add(format_cell, cfRule=openpyxl.formatting.rule.CellIsRule(operator="lessThanOrEqual", formula=[bottomlimit], fill=REDBLOCK, font=REDTEXT))

GRAPHS.conditional_formatting.add(format_cell, cfRule=openpyxl.formatting.rule.CellIsRule(operator="lessThanOrEqual", formula=[toplimit], fill=GREENBLOCK, font=GREENTEXT))

GRAPHS.conditional_formatting.add(format_cell, cfRule=openpyxl.formatting.rule.CellIsRule(operator="greaterThanOrEqual", formula=[bottomlimit], fill=GREENBLOCK, font=GREENTEXT))


再次,这一直有效。

处理文件保存的代码:

writer = ExcelWriter(filename, engine="openpyxl")
writer.workbook = analysis_book
writer.worksheets = dict((ws.title, ws) for ws in analysis_book.worksheets)
base_worksheet = analysis_book.worksheets[0]
worksheet_0 = analysis_book.worksheets[1]
worksheet_1 = analysis_book.worksheets[2]

然后,在添加所有数据、图像和我调用的条件格式之后

writer.close()

我试过使用

pandas==1.3.3 > 熊猫(最新) openpyxl==3.0.5 > openpyxl==3.1.1

但什么都没有改变

(这是一个古老的项目)

pandas openpyxl xlsx conditional-formatting
© www.soinside.com 2019 - 2024. All rights reserved.