NPOI Mapper初始化时抛出Wrong Local header signature: 0x41D异常求助
解决NPOI Mapper初始化时的ZipException异常
针对你遇到的ICSharpCode.SharpZipLib.Zip.ZipException: 'Wrong Local header signature: 0x41D'异常,给你几个实际可行的排查方向:
确认文件实际格式:
虽然文件后缀是.xlsx,但有可能实际是旧版的.xls二进制格式。NPOI Mapper对两种格式的处理逻辑不同,你可以尝试将文件后缀改为.xls后再测试,或者用Excel重新另存为标准的.xlsx格式(选择「Excel工作簿(.xlsx)」而非兼容格式)。重新生成干净的Excel文件:
尽管Excel能打开该文件,但可能文件存在隐性损坏(比如之前被部分写入中断,Excel自动修复过)。打开文件后直接另存为新的xlsx文件,用新文件进行初始化测试。改用流方式读取文件:
避免直接传入文件路径,改用FileStream读取文件后再初始化Mapper,代码示例:using (var stream = File.OpenRead("pathtofile\\xxx.xlsx")) { Mapper map = new Mapper(stream); }这种方式能规避部分文件读取时的锁定或不完整问题。
检查NuGet包版本兼容性:
确认项目中NPOI.Mapper和ICSharpCode.SharpZipLib的版本匹配。如果项目中手动引用了SharpZipLib,可能和NPOI Mapper依赖的版本冲突,尝试移除手动引用,让NuGet自动管理依赖版本。
内容的提问来源于stack exchange,提问作者Mateusz Przybylek
相关产品推荐
相关产品推荐

