gpt4 book ai didi

excel - 使用 openpyxl 保存现有工作簿会重置现有图表格式

转载 作者:行者123 更新时间:2023-12-03 01:28:00 27 4
gpt4 key购买 nike

我使用 openpyxl 库创建了一个简短的 python 脚本,以将一些数据添加到现有工作簿中,然后保存更改。现有的工作簿有许多图表,其中一些需要透明的图表区域背景,并且由于设计原因,所有这些图表的边框都已关闭。

当我打开编辑的文件时,与图表区域的边框和填充图案有关的所有图表样式都将重置为“自动”。有没有办法防止这种情况发生?或者也许有一种方法可以在保存之前访问工作簿对象中的图表集合并以编程方式为每个图表设置这些属性?

最佳答案

OpenPyxl 将无法工作,因为它会在保存文件之前删除图表格式。不保留现有图表格式的原因与 OpenPyxl 的设计有关。 OpenPyxl 类似于 Linux 和 Mac 操作系统上 Excel 的重复实现。它不仅仅是调用现有的 COM 和 Excel-VBA 功能。因此,在未来的更新中将很难将 Excel 广泛的图表格式化功能添加到该库中。

这里有一些可能有帮助的 Linux 库。

xlutils.copy https://xlutils.readthedocs.io/en/latest/copy.html

pyexcelerator(旧库)
https://sourceforge.net/projects/pyexcelerator/

参见How to programmatically edit Excel sheets?

是的,pywin32 需要 Windows 操作系统或 Windows 模拟。这是处理 Excel 文件的最佳方式,因为您可以完全访问所有 Windows COM 对象和所有 Excel-VBA Worksheets 对象(有时稍作修改)。

也许您可以在 Windows 模拟中使用 pywin32 来分离图表工作表对象,然后使用 openpyxl 在 Linux 中编辑工作表,最后使用 pywin32 重新组装工作簿?请参阅下面的示例 pywin32 代码。

import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb0 = excel.Workbooks.Open(r'C:\path\source.xlsx')
excel.Visible = True

# Move Chart 1 to a new Workbook, which becomes the ActiveWorkbook.
wb0.Charts('Chart1').Move()
excel.ActiveWorkbook.SaveAs(r'C:\path\chart1.xlsx')
excel.ActiveWorkbook.Close()

wb0.SaveAs(r'C:\path\no_charts.xlsx')
wb0.Close()
excel.Application.Quit()

关于excel - 使用 openpyxl 保存现有工作簿会重置现有图表格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55095589/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com