NPOI 是开源的 POI 项目的.NET版,可以用来读写Excel,Word,PPT文件。
在处理Excel文件上,NPOI 可以同时兼容 xls 和 xlsx。官网提供了一份 Examples,
给出了很多应用场景的例子,打包好的二进制文件类库,也仅有几MB,使用非常方便。
读Excel
NPOI 使用 HSSFWorkbook类来处理 xls,XSSFWorkbook 类来处理 xlsx,它们都继承接口 IWorkbook,因此可以通过 IWorkbook来统一处理 xls 和 xlsx 格式的文件
public void ReadFromExcelFile(stringfilePath)
{
IWorkbook wk= null;string extension =System.IO.Path.GetExtension(filePath);try{
FileStream fs=File.OpenRead(filePath);if (extension.Equals(".xls"))
{//把xls文件中的数据写入wk中
wk = newHSSFWorkbook(fs);
}else{//把xlsx文件中的数据写入wk中
wk = newXSSFWorkbook(fs);
}
fs.Close();//读取当前表数据
ISheet sheet = wk.GetSheetAt(0);
IRow row= sheet.GetRow(0); //读取当前行数据//LastRowNum 是当前表的总行数-1(注意)
int offset = 0;for (int i = 0; i <= sheet.LastRowNum; i++)
{
row= sheet.GetRow(i); //读取当前行数据
if (row != null)
{//LastCellNum 是当前行的总列数
for (int j = 0; j < row.LastCellNum; j++)
{//读取该行的第j列数据
string value =row.GetCell(j).ToString();
Console.Write(value.ToString()+ " ");
}
Console.WriteLine("\n");
}
}
}catch(Exception e)
{//只在Debug模式下才输出
Console.WriteLine(e.Message);
}
}
Excel中的单元格是有不同数据格式的,例如数字,日期,字符串等,