You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

意外终止Python写入Excel程序后,损坏的report.xlsx恢复求助

修复意外终止导致损坏的Excel工作簿

问题背景

我用Python代码向report.xlsx写入数据,每次循环迭代写入一个值。程序运行正常,但从终端意外终止后,打开文件时弹出错误:

The workbook cannot be opened or repaired by Microsoft Excel because it is corrupt.

怀疑是执行wb = load_workbook(file_excel)时终止程序导致文件损坏,试过多种方法无法恢复,文件内有大量已写入数据,需要修复工作簿。


修复方法

1. Excel自带修复功能

  • 打开Excel,点击「文件」>「打开」,选中损坏的report.xlsx
  • 点击「打开」按钮的下拉菜单,选择「打开并修复」,按提示完成操作

2. 手动解压修复(XLSX本质是压缩包)

  • 将report.xlsx后缀改为.zip,解压到本地文件夹
  • 检查xl/worksheets/下的工作表XML文件(如sheet1.xml),补全未闭合的XML标签、修正语法错误
  • 检查xl/workbook.xml确认工作簿结构完整
  • 修复后将所有文件重新压缩为ZIP包,改回.xlsx后缀尝试打开

3. 用Python脚本读取重建

from openpyxl import load_workbook
from openpyxl import Workbook

try:
    # 只读模式加载损坏文件,仅读取数据
    wb = load_workbook('report.xlsx', read_only=True, data_only=True)
    new_wb = Workbook()

    # 复制所有工作表及数据
    for sheet_name in wb.sheetnames:
        old_sheet = wb[sheet_name]
        new_sheet = new_wb.create_sheet(title=sheet_name)
        for row in old_sheet.iter_rows(values_only=True):
            new_sheet.append(row)
    
    # 删除默认生成的空工作表
    if 'Sheet' in new_wb.sheetnames:
        new_wb.remove(new_wb['Sheet'])
    
    new_wb.save('repaired_report.xlsx')
    print("修复完成,已保存为repaired_report.xlsx")
except Exception as e:
    print(f"修复失败:{str(e)}")

4. 第三方专业工具

使用Stellar Repair for Excel等专业工具,扫描并恢复损坏工作簿中的数据


内容的提问来源于stack exchange,提问作者Long Trinh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 19:45:58