c# - NPOI - 加载 Excel 文件会导致错误的本地标头签名:0xE011CFD0
问题描述
有谁知道可能导致此错误的原因
'错误的本地标头签名:0xE011CFD0'
var path = @"C:\Excel.xls";
using (var fs = File.OpenRead(path))
{
var wb = new XSSFWorkbook(fs);
}
解决方案
留下这个以防其他人经过这里。
.xls
是旧的 Excel 格式。使用该格式,您应该创建一个新HSSFWorkbook
实例。XSSFWorkbook
与新格式.xlsx
一起使用。
这两种类型都实现了IWorkbook
接口,因此您可以围绕此接口构建代码并在运行时确定工作簿实例的类型。
我创建了一个简单的 Excel 组件,这是构造函数:
private readonly bool _useOldExcelFormat;
private readonly IWorkbook _workbook;
public NpoiExcelManager(bool useOldExcelFormat = false)
{
_useOldExcelFormat= useOldExcelFormat;
if (_useOldExcelFormat)
{
_workbook = new HSSFWorkbook();
}
else
{
_workbook = new XSSFWorkbook();
}
}
您会发现两者之间存在一些差异HSSFWorkbook
,XSSFWorkbook
因此有时您必须为每个实现编写特定的代码,但这种情况非常罕见。
我想说大约 95% 的IWorkbook
接口适用于这两种实现。
推荐阅读
- python - Python conda 替代 pip -e
- in-app-purchase - 在 Revenuecat 上使用 Mac 应用内购买循环登录
- powershell - 删除运行脚本的源文件夹
- typescript - esModuleInterop:true,但 TSLint 错误:“只能使用 'esModuleInterop' 标志默认导入”
- azure - 在 Azure Active Directory 中管理用户
- javascript - 无法使用 google fire base 将我的数据推送到空数组中
- apache-kafka - 什么是 Kafka 消息调整?
- python - 复选框未在 HTML 页面上返回所需的值
- sql - SQL如何在选择语句周围使用转义字符作为引号
- sql-server - 返回员工的匹配检查日期,但获取与检查总金额相匹配的先前检查日期 SQL