手把手教你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数据库
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。