在 openpyxl 中使用 add_table() 方法会损坏现有的 excel 文件

我有一个名为“File.xlsx”的现有 excel 文件和一个名为“MySheet”的工作表


MySheet中的数据目前是一个范围,我想打开excel文件,将MySheet中的数据转换成excel表格。我能够成功地完成这部分,但是当我打开 excel 文件时,我收到一条错误消息:已修复的记录:来自 /xl/tables/table1.xml 部分的表(表)


该脚本可用于创建表格,但我想避免 excel 文件出现不可读错误。


我正在使用的脚本在这里:


from openpyxl.worksheet.table import Table

from openpyxl.utils import get_column_letter


file_name = "File.xlsx"

wb = load_workbook(file_name)

ws = wb['MySheet']

max_row = ws.max_row

max_column = ws.max_column


table = Table(displayName="FailureData", ref="A1:" + get_column_letter(max_column) + str(max_row))


ws.add_table(table)

wb.save(file_name)

wb.close()


弑天下
浏览 191回答 3
3回答

慕虎7371278

在我的例子中,当 2 个标头字段具有相同的名称时会发生错误。解决方案是通过在每次重复时递增 1 来确保标头中具有唯一的字段名称:f = ["Ford", "Volvo", "BMW", "Ford", "Ford"]print(f)>>['Ford', 'Volvo', 'BMW', 'Ford', 'Ford']fields_out = [(x if i == f.index(x) else x + str(f.count(x) - f[i + 1:].count(x))) for i, x in enumerate(f)]print(fields_out)>>['Ford', 'Volvo', 'BMW', 'Ford2', 'Ford3']对于通过界面进行的相同操作,Excel 会修改重复字段的名称。openpyxl 版本 3.0.5

慕田峪9158850

我知道这已经有一段时间了,但对于遇到此问题的其他人来说,我遇到了类似的问题。该表有两列同名。我从 df 中删除了重复的列并解决了问题。

函数式编程

我想到了。这似乎是旧版 openpyxl 的问题,我使用的是 2.6.1 版。我更新到最新版本 3.0.4,错误不再出现。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python