You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ExcelDataReader读取XLS文件报Invalid File Signature错误求助

解决ExcelDataReader读取XLS时的Invalid file signature问题

可能的原因及修复方案

  • 文件损坏或签名异常
    即便之前能正常读取,文件也可能在传输、存储过程中损坏,或是被其他工具修改后签名发生变化。可以试试:

    1. 用Excel重新打开该XLS文件,另存为新的XLS格式后再读取
    2. 用十六进制编辑器查看文件开头字节,正常XLS(BIFF格式)的起始签名应为0x09 0x08 0x10 0x00 0x00 0x06 0x05 0x00,确认是否符合
  • 版本兼容性问题
    3.6.0版本对部分旧版XLS文件的支持可能存在缺陷,尝试降级到3.5.0版本,或升级至最新稳定版(注意同步更新ExcelDataReader.DataSet包)

  • 流读取位置异常
    打开流后可能因操作导致位置偏移,需重置到起始位置再创建阅读器,修改代码如下:

    using (var stream = File.Open(path, FileMode.Open, FileAccess.Read))
    {
        stream.Position = 0; // 新增该行重置流位置
        using (var reader = ExcelReaderFactory.CreateReader(stream))
        {
            // 后续逻辑不变
        }
    }
    
  • 明确指定阅读器类型
    放弃自动检测,针对XLS文件强制使用二进制阅读器,避免格式识别错误:

    using (var reader = ExcelReaderFactory.CreateBinaryReader(stream))
    

    注意:此操作需确保文件确实是BIFF格式的XLS,而非后缀名改为XLS的XLSX文件

  • 文件权限或锁定问题
    若异常出现在File.Open行,大概率是文件被其他进程锁定(比如Excel未关闭),或是程序无读取权限:

    1. 确认文件未被办公软件或其他进程占用
    2. 检查程序是否拥有文件所在目录的读取权限

调整后的完整代码示例

private static List<string[]> GetExcelRecords(string path, bool hasHeaders)
{
    var records = new List<string[]>();
    using (var stream = File.Open(path, FileMode.Open, FileAccess.Read))
    {
        stream.Position = 0;
        // 根据扩展名明确选择阅读器类型
        var extension = Path.GetExtension(path).ToLowerInvariant();
        using (var reader = extension == ".xls" 
            ? ExcelReaderFactory.CreateBinaryReader(stream) 
            : ExcelReaderFactory.CreateOpenXmlReader(stream))
        {
            var sheetFile = reader.AsDataSet().Tables[0];

            for (int i = 0; i < sheetFile.Rows.Count; i++)
            {
                var record = sheetFile.Rows[i];
                if (hasHeaders)
                {
                    hasHeaders = false;
                    continue;
                }
                var row = record.ItemArray.Select(o => o.ToString()).ToArray();
                records.Add(row);
            }
        }
    }
    return records;
}

内容的提问来源于stack exchange,提问作者user16889986

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:25:19