阅读Excel版本NPOI错误

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

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

有谁知道如何读取一个Excel工作表,并将其存储在一个SQL表格与C#。 另外,你能指导我的错误,我越来越?

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)); } } } 

为了让NPOI为您确定Exceltypes,您应该使用NPOI.SS.WorkbookFactory类。 这将提供一个界面IWorkbook,它掩盖了2003年和2007年版本之间的区别。 工厂将根据文件types创build一个HSSFWorkbook或一个XSSFWorkbook。

这里是一个简单的例子:

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

这篇文章是对这个不同的很好的概述,作者也有其他NPOI相关的职位。

不幸的是,NPOI不支持BIFF5格式,这种格式来自Excel 5,与Excel 97不同。 这个页面http://www.gaia-gis.it/gaia-sins/freexl-1.0.0e-doxy-doc/Format.html给出了一个很好的背景&#x3002; 关键引用是:

意想不到的启示#1: 没有.xls文件格式。 它真的是一个普通的文件后缀适用于许多不同的事情。

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