读取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));
}
}
}
不幸的是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相关的文章。