阅读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给出了一个很好的背景。 关键引用是:
意想不到的启示#1: 没有.xls文件格式。 它真的是一个普通的文件后缀适用于许多不同的事情。
你需要做的是将文件转换为更新版本的Excel,有几个工具可以做到这一点,但我还没有find一个我可以在我的环境(共享服务器)使用。