Asp.NET MVC 导入Excel数据教程

发布时间:2017-09-11 12:21:43
Asp.NET MVC 导入Excel数据教程

先上效果图

\



1.引言

小弟最近接了个大学生的毕业设计,收了100块钱让做一个ASP.NET MVC导入Excel到数据库的功能,由于以前没做过就到处搜索资料,但是发现网上的资料不是直接贴一大堆乱起八遭的源码,就是需要借用NPOI第三方类库太麻烦了,况且预算才100RMB简直不值得,所以小弟尝试自己动手丰衣足食,所以就有了这篇博客。

先上一张小弟的思路图:

(说明:没有安装做流程图的软件!凑合着看吧)

\

2 进入正题

首先跟着小弟先创建一个默认的MVC项目(相信大家都会创建,这里就不演示了)

\

第一步

创建一个实体类,这个类是要导入数据库的对象。为了简单起见 小弟创建了个学生对象(记录了他的名字、年龄、各科成绩分数)。

先声明这只是教学代码,完全是为了演示用的,你真正做产品的代码可没这么简单的定义实体。

1 public class Student 2 { 3 4 public Student() 5 { 6 Id = Guid.NewGuid(); 7 } 8 9 //姓名 10 public string Name { get; set; } 11 12 //年龄 13 public int Age { get; set; } 14 15 //语文成绩 16 public int ChineseScore { get; set; } 17 //英文成绩 19 public int EnglishScore { get; set; } 20 21 //数学成绩 22 public int MathScore { get; set; } 23 24 25 }

第二步

实体创建完了,接下来我们创建一个Empty的控制器(名字取自己喜欢的),(这个也太简单了,我这里就不演示了)直接上结果:

小弟在这里创建了个名为UploadExcelController的控制器

1 public class UploadExcelController : Controller 2 { 3 // GET: /UploadExcel 4 public ActionResult Index() 5 { 6 return View(); 7 } 8 }

第三步

控制器创建完了接下来做什么呢?估计你也猜到了,所有的不是从界面开始吗!用户访问/UploadExcel/Index 的时候总要出来个交互的东西吧。那就先创建一个交互的视图,光标移到return View();右键创建添加视图

\

创建视图有很多种方法,我这里只是选择了种简单的具体看个人习惯创建。

视图创建完毕后,我们先构造一个浏览文件的html标记

1 @{ 2 ViewBag.Title = "View"; 3 } 4 5 Select the Excel file 6 7 8

9 @*文件路径的文本框*@ 10 11 12 @*浏览本地文件按钮*@ 13 14 浏览文件 15 16

小弟这里使用的是MVC自带的bootstrap框架,相信大家也都能看懂,如果看不懂那些标记的话!建议你先花1天时间入门bootstap框架。

这个时候的效果图应该是这样的

\

在上传文件到服务器有个常用的html标记是 ,没错小弟也用的这个标记,只是它太丑了我把它给隐藏了!用我上面的html标记给替换了。接下来我们开始创建它。

1 Select the Excel file 2 3 4

5 @*文件路径的文本框*@ 6 7 8 @*浏览本地文件按钮*@ 9 10 浏览文件 11 12 13 14

15 16 17 @using (Html.BeginForm("Browse", "UploadExcel", FormMethod.Post, new { enctype = "multipart/form-data", id = "form_Upload" })) 18 { 19 @Html.AntiForgeryToken() //防止跨站请求伪造(CSRF:Cross-site request forgery)攻击 20 //把fileUpload隐藏,原因它太难看了 21 }

红色的代码是新增的,Html.BeginForm的扩展方法如果大家不熟悉的话,你就把它看成form表单,因为它最后会生成form表单

哦!这个是基础知识,相信大家也都知道,(题外话:在能使用@HTML扩展方法的时候,我建议大家不要使用原生的HTML标记,为什么呢?因为如果你了解@HTML扩展方法的运行机制的话你就知道我的用意了, 就比如Html.BeginForm它是根据路由去生成的URL,智能的!安全的!如果自己写原生HTML标记的话,难免会产生不安全的URL!)

这个form表单就是我们把Excel文件上传到服务器用的,

看见form表单的action="/UploadExcel/Browse",所以我们还要在UploadExcelController控制器里创建第二个名称叫Browse的Action操作

1 public class UploadExcelController : Controller 2 { 3 // GET: /UploadExcel 4 public ActionResult Index() 5 { 6 return View(); 7 } 8 9 10 11 [HttpPost] 12 [ValidateAntiForgeryToken] 13 [HandleError(View = "~/Views/Shared/Error.cshtml")] 14 public ActionResult Browse(HttpPostedFileBase file) 15 { 16 17 } 18 }

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网站制作公司 http://www.45qun.com