【发布时间】:2020-06-26 21:40:14
【问题描述】:
我正在使用 ExcelDataReader 读取 .xls 文件并提取数据。但是,由于 Invalid file signature 异常,我无法打开从外部设备获取的 .xls 文件(我可以使用 Excel 打开它,但它会弹出一个文件格式和扩展名不匹配,如果我想打开它)。
FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateReader(stream);
我尝试使用 Interop 打开它,但是,无法访问 ***.xls 文件。该文件可能已损坏,位于没有响应的服务器上,或者是只读的异常。
Missing missing = Missing.Value;
Application excel = new Application();
Workbook workbook = excel.Workbooks.Open(filePath,
missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing,
missing, missing, missing, XlCorruptLoad.xlRepairFile);
有没有办法修复/恢复/打开/读取那些损坏的文件?
附言使用 Excel 手动打开并执行 SaveAs 不是一个选项,因为我需要为数百个文件执行此操作。
【问题讨论】:
-
您是否考虑过为这些文件提供适当的文件扩展名?您确定它们实际上不是具有 .xls 名称的 .xlsx 格式文件吗?
-
在我看来,鉴于 Excel 可以打开它们(带有警告),就像文件没有被损坏,而是被错误命名。
-
在十六进制编辑器中打开文件并向我们显示内容的屏幕截图
-
我用 hex sn-p 编辑了我的帖子
-
尝试将其扩展名更改为
.zip并提取它,然后检查您的工作表`\Book11.xlsx\xl\worksheet`