异常堆栈:
OfficeOpenXml.Packaging.Ionic.Zip.BadReadException: Bad signature (0x71CA947A) at position 0x010B6489
at OfficeOpenXml.Packaging.Ionic.Zip.ZipEntry.ReadHeader(ZipEntry ze, Encoding defaultEncoding)
at OfficeOpenXml.Packaging.Ionic.Zip.ZipEntry.ReadEntry(ZipContainer zc, Boolean first)
at Ionic.Zip.ZipInputStream.GetNextEntry()
at OfficeOpenXml.Packaging.ZipPackage..ctor(Stream stream)
at OfficeOpenXml.ExcelPackage.ConstructNewFile(String password)
at OfficeOpenXml.ExcelPackage..ctor(FileInfo newFile)
补充:文件用 win10 自带的 office 工具能正常打开,用 wps office 也能正常打开,并没有提示文件损坏
建议提供能重现问题的示例代码
我们在实际项目中使用了 EPPlus.Core 1.5.4,没遇到这个问题
是客户那边的程序读取有问题,我拿不到代码
@青石路: 可以自己写代码用 EPPlus 读取同样的 excel 文件试试
@dudu: 没写过 .net,玩犊子了
@青石路: 试试用 excel 打开这个文件并另存,然后读取另存后的文件
C# 读取示例代码
using OfficeOpenXml;
var filePath = @"xxx.xlsx";
using var p = new ExcelPackage(filePath);
var ws = p.Workbook.Worksheets.First();
Console.WriteLine("worksheet: " + ws.Name);
从错误信息看应该是在生成这个 excel 文件时没有完成压缩操作
Office Open XML (also informally known as OOXML)[5] is a zipped, XML-based file format developed by Microsoft
根据您提供的错误信息 Bad signature (0x71CA947A) at position 0x010B6489
,这通常表明 EPPlus 在尝试解压缩 XLSX 文件时遇到了无效的 ZIP 签名。这可能由多种原因引起,以下是一些可能的解决方案和建议:
文件格式问题:
EPPlus 版本问题:
ZIP 压缩问题:
升级 EPPlus 到最新版本:
Install-Package EPPlus -Version 最新版本号
尝试使用流的方式加载文件:
FileInfo
可能会导致问题,尝试使用文件流来加载 XLSX 文件。using (var stream = File.OpenRead("path/to/your/file.xlsx"))
{
using (var package = new ExcelPackage(stream))
{
// 处理 Excel 文件
}
}
重新保存文件:
使用其他库尝试读取文件:
检查文件是否包含宏或特殊内容:
调试文件内容:
联系 EPPlus 社区或支持:
希望这些建议能帮助您解决问题!如果有进一步的问题或需要更详细的指导,请随时告知。
感谢提供这些方案,我去试试
是不是又是经典的中文路径问题?
这个可以排除,08:00 生成的文件读取有问题,09:00 生成的读取没问题,怀疑是不是数据的问题,还在排查中
这个错误提示 Bad signature (0x71CA947A)
通常表明 EPPlus 在处理 xlsx 文件时遇到了问题,可能是因为文件格式不完全符合预期,或者文件中的某些部分损坏。尽管Windows 10自带的Office工具和WPS Office能够打开该文件,EPPlus 作为一个库,对于文件的格式和完整性要求会更严格。
以下是一些可能的解决方法和建议:
确保你的 xlsx 文件确实是一个有效的 Office Open XML 文件。可以尝试将文件另存为 xlsx 格式,然后再用 EPPlus 读取。
如果你只是想简单地读取Excel文件,可以尝试使用其他库,如 NPOI 或 ClosedXML。这两个库有时对于某些格式的支持可能更好,尤其是在EPPlus遇到问题时。
使用压缩软件(比如 WinRAR 或 7-Zip)尝试打开 xlsx 文件。xlsx 文件实际上是一个 ZIP 文件,可以查看里面的结构是否缺失某些重要文件(如 xl/workbook.xml
)。
确保你使用的是 EPPlus 的最新版本。有任何 bug 或格式支持的问题可能已经在新的版本中得到解决。
如果文件很大或者包含复杂的数据结构,可以尝试只读取文件的一部分,确认是否特定的数据结构导致的问题。
确保你的应用程序有权限读取该文件,特别是在Windows环境中,文件权限可能会影响文件的读取。
如果上述方法无法解决你的问题,可以提供更多文件的上下文信息。我会更乐意帮助你找出解决方案。如果需要,我可以提供更详细的代码示例。