读取Excel版本NPOI错误

本文关键字:错误 NPOI 版本 Excel 读取 | 更新日期: 2023-09-27 17:54:27

我正在尝试读取Excel文件,97-2003或2007-2010版本,但当我尝试读取时间时,它给了我以下错误:

提供的电子表格似乎是excel 5.0/7.0 (BIFF5)格式。芋泥只有BIFF格式(从excel版本97/2000/xp/2003)

有谁知道如何用c#读取Excel表并将其存储在SQL表中吗?另外,你能告诉我我遇到的错误吗?

private void btnLoad_Click(object sender, EventArgs e)
{
    HSSFWorkbook hssfwb;
    using (FileStream file = new FileStream(@"C:'Book1.XLS", FileMode.Open,
                                            FileAccess.Read))
    {
        hssfwb = new HSSFWorkbook(file);
    }
    ISheet sheet = hssfwb.GetSheet("Sheet1");
    for (int row = 0; row <= sheet.LastRowNum; row++)
    {
        if (sheet.GetRow(row) != null) //null is when the row only contains empty cells 
        {
            MessageBox.Show(string.Format("Row {0} = {1}", row,
                sheet.GetRow(row).GetCell(0).StringCellValue));
        }
    }
}

读取Excel版本NPOI错误

不幸的是NPOI不支持BIFF5格式,这种格式来自Excel 5,与Excel 97版本不同且不兼容。这个页面http://www.gaia-gis.it/gaia-sins/freexl-1.0.0e-doxy-doc/Format.html提供了一个很好的背景。关键引号是:

意外启示#1:没有。xls文件格式。

你需要做的是将文件转换为最新版本的excel,有一些工具可以做到这一点,但我还没有找到一个我可以在我的环境(共享服务器)中使用的

为了让NPOI为您确定Excel类型,您应该使用NPOI. ss。WorkbookFactory 类。这将给出一个IWorkbook接口,它掩盖了2003和2007版本之间的差异。工厂将根据文件类型创建HSSFWorkbook或XSSFWorkbook。

下面是一个简单的例子:

FileStream _fileStream = new FileStream(filenamePath, FileMode.Open, 
                                      FileAccess.Read);
IWorkbook _workbook = WorkbookFactory.Create(_fileStream);
_fileStream.Close();
ISheet _worksheet = _workbook.GetSheetAt(0);

这篇文章是对不同之处的一个很好的概述,作者还有其他与NPOI相关的文章。