我使用OpenPyXL进行处理,只有2行代码:
workbook = load_workbook(filename='input.xlsx', keep_vba=True, rich_text=True)
# I will do operator here, but there is an error, so I comment this line
workbook.save('output.xlsx')
然后我得到了较小尺寸的输出:
当我尝试打开output.xlsx时,出现此通知:
该图表已被 Microsoft Excel 删除。有时我无法在 Microsoft Excel 中打开它,但 LibreOffice 可以打开它,没有错误。
左:输入.xlsx,右:输出.xlsx。图表已删除,Microsoft Excel 报告错误:
警报:
我的输入文件通常有 ~ 4 张纸、一张图表和 1 张纸包含数据。我的任务是将数据写入one表,我不关心其他的。我想获得以下解决方案之一:
使用其他库/语言是最后一个选择。
问题在于您的图表是组合图表。图表绘图区域包含条形图和折线图。每个图表都有一个系列,其中第一个系列(条形图系列)具有
idx
0 和 order
1,而第二个系列(折线图系列)具有 idx
1 和 order
0. 顺序为图表选择数据源中的系列顺序。折线图系列位于条形图系列之前。
似乎
openpyxl
读者无法正确处理组合图表。它仅读取绘图区域中的第一个图表,并将第二个图表的 XML 作为绘图区域的附加 XML,但不作为拥有自己系列的图表。因为读者只找到一个图表系列,所以该系列得到 order
0,因为它是唯一已知的系列。以下未知折线图的 XML 保持 idx
1 和 order
0。但是这两个系列具有相同的 order
0,这会导致在 Excel 中打开时出错。
解决方法: 在图表的选择数据源中更改系列顺序。对于左图,“成本”位于“CV”之前。对于右图表,“IMP”位于“CPC”之前。 那么条形图系列有
idx
0 和 order
0,折线图系列有 idx
1 和 order
1。这样就可以了。