【问题标题】:C# ExcelDataReader Error - 'Invalid file signature' for XLSB formatC# ExcelDataReader 错误 - XLSB 格式的“文件签名无效”
【发布时间】:2020-05-11 13:08:17
【问题描述】:

当我尝试使用以下代码读取 xlsb 文件时,我收到 'Invalid file signature' 错误。

如果我使用 CreateReader,那么我会收到 'Detected ZIP file, but not a valid OpenXml file' 错误。我也尝试了下面给出的其他选项,但对我没有任何作用。

谁能帮我阅读 xlsb 文件。

Stream stream = new MemoryStream(srcContent);

public static DataSet GetXLSBData(Stream stream)
{
    DataSet dataSet;

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

        dataSet = reader.AsDataSet();
    }

    foreach (DataTable table in dataSet.Tables)
    {
        table.TableName = table.TableName.Trim();
    }

    return dataSet;
}

尝试了其他选项:

var reader = ExcelReaderFactory.CreateOpenXmlReader(stream)
var reader = ExcelReaderFactory.CreateCsvReader(stream)
var reader = ExcelReaderFactory.CreateReader(stream)

【问题讨论】:

  • 尝试将其转换为 xlsx 格式。
  • 请参考LINK
  • 仅供参考,看起来 ExcelDataReader 的下一个版本将添加对 XLSB 的支持,但它尚未发布,并且他们的 repo 在过去 6 个月里一直很安静...... :-/
  • 面临完全相同的问题!我正在寻找一个可以帮助在 .Net Core 3 中打开 XLSB 文件的库,但到目前为止没有任何效果
  • 您是否尝试过使用NPOI

标签: c# .net excel asp.net-web-api exceldatareader


【解决方案1】:

我的建议

c#代码:

 using (XlsxOrXlsbReadOrEdit excelFile = new XlsxOrXlsbReadOrEdit())
{
   excelFile.Open("file.xlsx");
   excelFile.ActualSheetName = "sheet1";
   object[] row = null;
   while (excelFile.Read())
   {
       if (row == null)
       {
           row = new object[excelFile.FieldCount];
       }
       excelFile.GetValues(row);
   }
}

disclimer - 我是 SpreadSheetTasks 的创建者 链接

【讨论】:

    猜你喜欢
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    相关资源
    最近更新 更多