【问题标题】:Openpyxl created excel file with table causes file that requires recovery errorOpenpyxl创建带有表格的excel文件导致需要恢复错误的文件
【发布时间】:2020-09-29 16:01:56
【问题描述】:

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

我正在使用的代码:

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")

【问题讨论】:

  • 该代码无法按原样运行,请提供完整示例。
  • @CharlieClark 我已经更正了。

标签: python-3.x excel openpyxl excel-tables


【解决方案1】:

对我来说,以下工作:

  • 根据需要更改工作簿(仅数据无格式)
  • 保存工作簿(如果您尝试在此处打开它,则会显示错误消息)
  • 关闭工作簿
  • 再次打开工作簿(我认为这里 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 文件了。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我的表名中出现破折号“-”的问题
    猜你喜欢
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 2016-02-04
    • 2014-01-08
    • 1970-01-01
    相关资源
    最近更新 更多