C#使用使用NPOI导入导入Excel的方法详解的方法详解
本文实例讲述了C#使用NPOI导入Excel的方法。分享给大家供大家参考,具体如下:
NPOI是由国人开发的一个进行excel操作的第三方库。百度百科介绍如下:NPOI
本文主要介绍如何使用NPOI将Excel数据读取。
首先引入程序集:
using System.IO;
using System.Reflection;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System.Web;
然后定位到文件位置:
string path = "~/上传文件/custompersonsalary/" + id + "/"+id+".xls";
string filePath = Server.MapPath(path);
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite) //打开.xls文件
接下来,将xls文件中的数据写入workbook中:
HSSFWorkbook wk = new HSSFWorkbook(fs); //把xls文件中的数据写入wk中
wk.NumberOfSheets是xls文件中总共的表的个数。
wk.GetSheetAt(i)是获取第i个表的数据。
通过循环:
for (int i = 0; i < wk.NumberOfSheets; i++) //NumberOfSheets是xls文件中总共的表数
将每个表的数据单独存放在ISheet对象中:
ISheet sheet = wk.GetSheetAt(i); //读取当前表数据
这样某张表的数据就暂存在sheet对象中了。
接下来,我们可以通过sheet.LastRowNum来获取行数,sheet.GetRow(j)来获取第j行数据:
for (j = 1; j <= sheet.LastRowNum; j++) //LastRowNum 是当前表的总行数
{
IRow row = sheet.GetRow(j); //读取当前行数据
每一行的数据又存在IRow对象中。
我们可以通过row.LastCellNum来获取列数,row.Cells[i]来获取第i列数据。
row.Cells[2].ToString();
这里需要注意一点的就是,如果单元格中数据为公式计算而出的话,row.Cells[i]会返回公式,需要改为:
row.Cells[2].NumericCellValue
就可以返回计算结果了。
最后将我在项目中用到的一段导入Excel数据赋予实体的示例如下:
/// <summary>
/// 导入操作
/// </summary>
/// @author: 刘放
/// @date: 2015/10/17
/// <param name="id">主表id</param>
/// <returns>如果成功,返回ok,如果失败,返回不满足格式的姓名</returns>
public string InDB(string id)