你可以使用NPOI读取扩展名为.xls和.xlsx的Excel文件,只需要在using部分添加以下内容。
using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using NPOI.POIFS.FileSystem;
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
重要的是在打开文件时区分文件扩展名,使用相应的组件,并使用ISheet接口,这样可以独立于文件扩展名引用工作表。
fileExt = Path.GetExtension(fileName);
ISheet sheet;
if (fileExt.ToLower() == ".xls")
{
HSSFWorkbook hssfwb;
using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
hssfwb = new HSSFWorkbook(file);
}
sheet = hssfwb.GetSheet(sheetName);
}
else
{
XSSFWorkbook hssfwb;
using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
hssfwb = new XSSFWorkbook(file);
}
sheet = hssfwb.GetSheet(sheetName);
}
一旦您拥有了 Excel 对象,您只需要读取它(在 NPOI 中,行和列都是从零开始计数)
//Loop through the rows until we find an empty one
for (int row = 0; row <= sheet.LastRowNum; row++)
{
//Get the cell value
string cellValue = sheet.GetRow(row).GetCell(0).ToString().Trim(); //In the method GetCell you specify the column number you want to read, in the method GetRow you spacify the row
string cellValue2 = sheet.GetRow(row).GetCell(0).StringCellValue.Trim();
}
要读取单元格的值,您可以使用 .ToString() 方法或 StringCellValue 属性,但请注意,StringCellValue 仅适用于字符串单元格,对于数字和日期单元格,它会抛出异常。
.xlsx
。该博客文章还展示了早期版本NPOI的“解决方法”。 - marc_s