.NET Core 3.1升级.NET 6后SXSSFWorkbook.Write报错求助
问题解决:.NET 6升级后NPOI SXSSFWorkbook.Write方法报错找不到SharpZipLib构造函数
问题原因
这个错误源于NPOI 2.6.0依赖的ICSharpCode.SharpZipLib版本与.NET 6环境不兼容,或是项目中存在多版本SharpZipLib导致依赖解析异常。.NET Core 3.1环境下能正常运行,是因为当时的依赖版本匹配,升级.NET 6后依赖解析逻辑变化,触发了版本不兼容问题。
解决方案
1. 统一SharpZipLib版本
NPOI 2.6.0官方适配的SharpZipLib版本为0.86.0,执行以下操作:
- 卸载项目中现有SharpZipLib包:
Uninstall-Package ICSharpCode.SharpZipLib - 安装指定兼容版本:
Install-Package ICSharpCode.SharpZipLib -Version 0.86.0
2. 清理并重新还原依赖
- 删除项目根目录下的
bin和obj文件夹 - 执行NuGet还原命令:
dotnet restore
3. 排查依赖冲突
打开NuGet包管理器的「已安装」标签,检查是否存在多个版本的SharpZipLib。若有,通过「管理NuGet程序包」将所有引用统一为0.86.0版本。
4. 备选方案:调整Write方法调用
若上述方法无效,可尝试移除Write方法的第二个参数(true表示自动关闭流),手动管理流生命周期:
var tempXlsxFile = $@"{Path.Combine(Path.GetTempPath(), Path.GetFileNameWithoutExtension(tempFile.Name))}.xlsx"; await using Stream tempFileStream = _fileSystem.File.OpenWrite(tempXlsxFile); workbook.Write(tempFileStream); await tempFileStream.FlushAsync();
内容的提问来源于stack exchange,提问作者user3498203
相关产品推荐
相关产品推荐

