手把手教你mvc导入excel
准备工作:
1.在项目中添加对NPOI的引用,NPOI下载地址:http://npoi.codeplex.com/releases/view/38113
2.NPOI学习
NPOI下载,里面有五个dll,需要引用到你的项目,我这边用的mvc4+三层的方式架构的项目
我用的工具是(vs2012+sql2014)
准备工作做完,我们开始进入主题
1.前端页面,代码:
@using(Html.BeginForm("importexcel","foot",FormMethod.Post,new{enctype="multipart/form-data"})) { 请选择要上传的Excel文件: 选择文件 @* @Html.AntiForgeryToken()//防止跨站请求伪造(CSRF:Cross-siterequestforgery)攻击 *@ }
2.接下来就是控制器
publicclassfootController:Controller { // //GET:/foot/ privatestaticreadonlyStringFolder="/files"; publicActionResultexcel() { returnView(); } ///导入excel文档 publicActionResultimportexcel() { //1.接收客户端传过来的数据 HttpPostedFileBasefile=Request.Files["file"]; if(file==null||file.ContentLength<=0) { returnJson("请选择要上传的Excel文件",JsonRequestBehavior.AllowGet); } //stringfilepath=Server.MapPath(Folder); //if(!Directory.Exists(filepath)) //{ //Directory.CreateDirectory(filepath); //} //varfileName=Path.Combine(filepath,Path.GetFileName(file.FileName)); //file.SaveAs(fileName); //获取一个streamfile对象,该对象指向一个上传文件,准备读取改文件的内容 Streamstreamfile=file.InputStream; DataTabledt=newDataTable(); stringFinName=Path.GetExtension(file.FileName); if(FinName!=".xls"&&FinName!=".xlsx") { returnJson("只能上传Excel文档",JsonRequestBehavior.AllowGet); } else { try { if(FinName==".xls") { //创建一个webbook,对应一个Excel文件(用于xls文件导入类) HSSFWorkbookhssfworkbook=newHSSFWorkbook(streamfile); dt=excelDAL.ImExport(dt,hssfworkbook); } else { XSSFWorkbookhssfworkbook=newXSSFWorkbook(streamfile); dt=excelDAL.ImExport(dt,hssfworkbook); } returnJson("",JsonRequestBehavior.AllowGet); } catch(Exceptionex) { returnJson("导入失败!"+ex.Message,JsonRequestBehavior.AllowGet); } } } }
3.业务逻辑层[excelDAL]
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; usingNPOI; usingNPOI.SS.UserModel; usingNPOI.HSSF.UserModel; usingSystem.Data; usingNPOI.XSSF.UserModel; namespaceGJL.Compoent { publicclassexcelDAL { //////#region两种不同版本的操作excel ///扩展名*.xlsx /// publicstaticDataTableImExport(DataTabledt,XSSFWorkbookhssfworkbook) { NPOI.SS.UserModel.ISheetsheet=hssfworkbook.GetSheetAt(0); System.Collections.IEnumeratorrows=sheet.GetRowEnumerator(); for(intj=0;j<(sheet.GetRow(0).LastCellNum);j++) { dt.Columns.Add(sheet.GetRow(0).Cells[j].ToString()); } while(rows.MoveNext()) { XSSFRowrow=(XSSFRow)rows.Current; DataRowdr=dt.NewRow(); for(inti=0;i///扩展名*.xls /// publicstaticDataTableImExport(DataTabledt,HSSFWorkbookhssfworkbook) { //在webbook中添加一个sheet,对应Excel文件中的sheet,取出第一个工作表,索引是0 NPOI.SS.UserModel.ISheetsheet=hssfworkbook.GetSheetAt(0); System.Collections.IEnumeratorrows=sheet.GetRowEnumerator(); for(intj=0;j<(sheet.GetRow(0).LastCellNum);j++) { dt.Columns.Add(sheet.GetRow(0).Cells[j].ToString()); } while(rows.MoveNext()) { HSSFRowrow=(HSSFRow)rows.Current; DataRowdr=dt.NewRow(); for(inti=0;i publicstaticpartialclassFooterDAL { //////添加 /// ////// /// /// /// /// publicstaticintAddfoot(stringcategary,stringfcategary,stringfTitle,stringfUrl) { stringsql=string.Format("insertintoFoot(categary,fcategary,fTitle,fUrl)values(@categary,@fcategary,@fTitle,@fUrl)"); SqlParameter[]parm= { newSqlParameter("@categary",categary) ,newSqlParameter("@fcategary",fcategary) ,newSqlParameter("@fTitle",fTitle) ,newSqlParameter("@fUrl",fUrl) }; returnnewDBHelperSQL (CommonTool.dbname).ExcuteSql(sql,parm); } } //FooterDAL将datatable,就是excel里面的数据添加到sql数据库
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。