意外终止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
相关产品推荐
相关产品推荐

