Openpyxl created excel file with table causes file that requires recovery 错误

Openpyxl created excel file with table causes file that requires recovery error

我一直在测试使用 openpyxl 将 table 添加到工作表,但是当我尝试打开它时出现以下错误。文件打开,但格式不正确。点击恢复后,excel 报告 table xml 出现问题。这个有workaround/fix吗?

我使用的代码:

import openpyxl
from openpyxl import Workbook
from openpyxl.worksheet.table import Table, TableStyleInfo

xl_file_name = "new_test.xlsx"
wb = Workbook()
ws = wb.worksheets[0]
ws.title = "Table_Sheet"
headers = ["header1","header2","header3"]
for col in range(1,len(headers)+1):
    for row in range(1,5):
        if row == 1:
            ws.cell(row,col).value = headers[col-1]
        else:
            ws.cell(row,col).value = str(row)

tbl = Table(displayName="Tbl1",ref="A1:C4")
style = TableStyleInfo(name="TableStyleMedium9", showFirstColumn=False, showLastColumn=False, showRowStripes=True, showColumnStripes=True)
tbl.tableStyleInfo = style
ws.add_table(tbl)
wb.save("new_test.xlsx")

您的 table 名称导致了问题。 运行 与 displayName="Tbl"displayName="Tbl_1" 相同的代码,您会发现它工作正常。我不是 100% 确定,但我认为问题的原因是您提供的名称与 TBL1 可能的单元格引用的格式冲突。

对我来说,以下方法有效:

  • 根据需要更改工作簿(仅数据无格式)
  • 保存工作簿(如果您尝试在此处打开它,它将显示错误消息)
  • 关闭工作簿
  • 再次打开工作簿(我认为这里 Excel 自动修复了问题)
  • 插入必要的格式化命令
  • 保存工作簿
  • 关闭工作簿

或者,作为代码:

import openpyxl

workbook = openpyxl.load_workbook(Source_Path)

##your code appending and deleting values - which  I think sometimes causes the errors

workbook.save(Destination_Path)
workbook.close

#Now open it again
workbook = openpyxl.load_workbook(Destination_Path)

#Your Code to format

workbook.save(Destination_Path)
workbook.close

现在您应该可以正确打开 Excel 文件了。

我收到了同样的错误消息。

我在创建名称开头带有数字的表,所以我更改了该代码以在开头添加 t_,所以

table_name = "112MHZ_data"
变成了
table_name = "t_112MHZ_data"

这为我解决了这个问题。