我正在尝试修改 Excel 文件,其中包含许多 VBA 操作(不是我创建的)。我温和地尝试修改单个组合框项目。
from openpyxl import load_workbook
# Load the workbook
workbook = load_workbook('input.xlsx')
# Select the worksheet
worksheet = workbook['Monthly']
# Change the value of the cell C5
worksheet['C5'] = 9
# Save the workbook with a new name
workbook.save('output.xlsx')
这些是我收到的警告:
用户警告:不支持数据验证扩展,并将 删除了警告(msg)
用户警告:条件格式扩展是 不支持,将被删除 warn(msg)
输出文件大小要小得多,并且某些功能消失,尽管组合框值已被修改。我的问题是是否有一个库可以保留验证/条件格式扩展的功能,同时允许我修改单元格值?
很遗憾,
openpyxl
本身并不支持修改 VBA 代码或保留 Excel 文件中的所有扩展功能,例如数据验证、条件格式和 VBA 操作。它主要用于读取和写入单元格数据,并且在保存时可能会删除或修改某些高级 Excel 功能。
为了修改 Excel 文件而不丢失扩展名和功能,可以考虑以下替代方案:
1. 使用
xlwings
库:
xlwings
是一个 Python 库,允许通过 Python 代码与正在运行的 Excel 实例进行交互。它可以在不修改文件结构的情况下操作单元格、运行 VBA 宏以及访问 Excel 对象模型。
```python import xlwings as xw
# 打开 Excel 文件 wb = xw.Book('input.xlsx')
# 选择工作表 sheet = wb.sheets['Monthly']
# 修改单元格值 sheet.range('C5').value = 9
# 保存文件 wb.save() ```
2. 使用
win32com
模块:
win32com
是 Python for Windows 扩展的一部分,允许与 Windows 应用程序(包括 Excel)进行交互。可以使用它来自动执行 Excel 并修改文件,而无需更改文件结构。
```python import win32com.client
# 创建 Excel 应用程序对象 excel = win32com.client.Dispatch("Excel.Application")
# 打开 Excel 文件 wb = excel.Workbooks.Open('input.xlsx')
# 选择工作表 sheet = wb.Worksheets('Monthly')
# 修改单元格值 sheet.Range("C5").Value = 9
# 保存文件 wb.Save()
# 关闭 Excel 应用程序 excel.Quit() ```
3. 使用其他 Python 库:
还有一些其他的 Python 库可以处理 Excel 文件,例如
XlsxWriter
,
pandas
和
xlrd
. 这些库的功能各不相同,可能需要根据的具体需求选择合适的库。
请注意,使用
xlwings
和
win32com
需要在的计算机上安装 Microsoft Excel。
希望这些信息对有所帮助!
标签:python,excel From: 78828344