Openpyxl:添加工作表而不删除数据验证

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

我正在尝试使用 openpyxl 将额外的工作表添加到现有的 xlsx 工作簿,同时保留数据验证规则。但是,当我加载工作簿时,我收到警告:

openpyxl\worksheet_reader.py:312:用户警告:不支持数据验证扩展,将被删除

当我使用此代码添加额外的工作表时:

excel_book = openpyxl.load_workbook('SomeSpreadsheet.xlsx' )

with pd.ExcelWriter('SomeSpreadsheet.xlsx', engine='openpyxl') as writer:
    writer.book = excel_book
    writer.sheets = {
        worksheet.title: worksheet
        for worksheet in excel_book.worksheets
    }
    secondMockData = { 'c': [10,20], 'd': [30,40] }
    secondMockDF = pd.DataFrame(secondMockData)
    secondMockDF.to_excel(writer, 'sheetB', index=False)
    writer.save()

代码运行成功,但正如警告消息所述,保存文件后所有数据验证规则均已生效。有没有办法解决这个问题,或者可以通过任何其他方式完成此任务(例如,添加额外的工作表)而不丢失数据验证?

提前非常感谢

python pandas openpyxl
1个回答
0
投票

您将需要解决创建数据验证的标准方法。您仍然会在终端中收到错误消息,但是数据验证将保留在您的 Excel 文件中。

  1. 在 Excel 中,转到公式 > 名称管理器。
  2. 创建一个新变量(命名范围)来引用您要验证的单元格。
  3. 转到数据 > 数据验证 > 列表。
  4. 不要手动选择单元格,而是键入“= NewVariableName”(将“NewVariableName”替换为您创建的变量的名称)。

这样,openpyxl 就可以识别并保留与命名范围关联的数据验证规则。

© www.soinside.com 2019 - 2024. All rights reserved.