导入Excel表数据

这篇博客介绍了如何使用NPOI库从Excel文件中读取数据,并进行数据验证,然后保存到数据库。首先,创建模板文件并提供下载。在控制器中,定义DownImportTemplate方法获取模板路径,UploadExcelFile方法用于导入数据。通过HttpPostedFileBase接收文件,读取文件内容并转化为内存流,然后利用NPOI读取工作簿和工作表。数据验证后,将有效数据保存到数据库。
摘要由CSDN通过智能技术生成

下载导入模板文件(没有模板就下载指定的模板)
首先写一个模板用来填写要传输到导入的地方,就像下方图的格式:在这里插入图片描述

这个表格要放到你的项目文件夹里面。然后去控制器写方法,给方法一名称(DownImportTemplate),让页面找到存放模板的路径,在服务器里的那个项目的位置找到存放模板的路径转换成流。If判断文件的路径能不能用IO流读取,若读取不出,便会提醒模板不存在,若成功,便把路径转换成文件名字,传给字符串(strfileName),总的来说就是获取到项目里的模板路径。
在这里插入图片描述

再来一个方法,导入数据,给方法一个名称(UploadExcelFile),然后实例化返回的值,再用try来捕捉错误,若数据异常,便会跳到(catch)提示上传失败,成功UploadExcelFile会获取文件的名字。
public ActionResult UploadExcelFile(HttpPostedFileBase xlsFile){
ReturnJson msg = new ReturnJson();
try{
//1、获取上传的文件
//读取文件的后缀
string strExtension = Path.GetExtension(xlsFile.FileName);
} catch (Exception)
{
msg.Text = “导入失败请检查是否有工作表,是否有数据,是否按照模板填写!”;
}
然后开始判断是不是大小写的(xls),若表示则提示,声明二进制数组存放文件,将传入的文件转化为二进制的数组存入(fileBytes ),最后将内存流转化为工作簿,其实最终就是要获取工作簿。

if (".xls".Equals(strExtension, StringComparison.CurrentCultureIgnoreCase))
{
//2、把文件转换为二进制数组
byte[] fileBytes = new byte[xlsFile.ContentLength];
xlsFile.InputStream.Read(fileBytes, 0, xlsFile.ContentLength);
//3、二进制数组转换为内存流
MemoryStream ExcelemoryStream = new MemoryStream(fileBytes);
//4、利用NPOI把内存流中的数据读取成Excel
//将内存流转化为工作簿
NPOI.SS.UserModel.IWorkbook workBook = new NPOI.HSSF.UserModel.HSSFWorkbook(ExcelemoryStream);

} else
{
msg.Text = “导入失败,请上传.xls文件!”;
}
return Json(msg, JsonRequestBehavior.AllowGet);
}
继续if判断,判断工作簿中有没有工作表,大于0就证明存在工作表,否则不存在工作表,用(ISheet )来获取工作簿中的第一张工作表,然后用(sheet)来看看有没有数据
//判断是否存在在工作表
if (workBook.NumberOfSheets > 0)
{
//获取第一个工作表
NPOI.SS.UserModel.ISheet Sheet = workBook.GetSheetAt(0);
} else
{
msg.Text = “导入失败,请检查是否存在工作表!”;
}
继续if判断,判断工作簿中的工作表中是否有数据,若等于0便没有数据。提示错误。若判断大于0,声明(DataTable)变量来接收数据,获取标题行,第二行,索引为1,因为第二行是说明,上面已经获取到过了,接着获取表格的列数和行数,然后创建(D

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值