思路:
1、将excel文件导入到服务器中。
2、读取excel文件,转换成dataset.
3、循环将dataset数据插入到数据库中。
本例子使用的表格为一个友情链接表F_Link(LinkId,LinkName,LinkUrl)
使用的excel文件:
准备工作做好后,就直接进入主题:
一、view视图(视图名称为UploadFile,控制器为home)
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm("UploadFile", "home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary(true)
<input type="file" name="file" value="选择文件" />
<input type="submit" id="submit" value="导入" />
}
二、控制器
public ActionResult UploadFile()
{
//设置上传目录
string path = Server.MapPath("~/Content/upload/");
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
//判断是否已经选择上传文件
HttpPostedFileBase file = Request.Files["file"];
if (file != null && file.ContentLength > )
{
string filenName = file.FileName;
string fileExt = Path.GetExtension(filenName).ToLower().Substring();
if (fileExt != "xls" && fileExt != "xlsx")
{
ModelState.AddModelError("", "您选择的不是Excel文件");
return View();
}
else
{
//上传文件
string filepath = path + filenName;
file.SaveAs(filepath);
//读取excel文件,转换成dataset
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
DataSet ds = new DataSet();
oada.Fill(ds);
//循环读取每一行,将数据插入到sql server数据库
foreach(DataRow row in ds.Tables[].Rows)
{
F_link fl=new F_link();
fl.LinkName=row[].ToString();
fl.LinkUrl=row[].ToString();
db.F_link.AddObject(fl);
db.SaveChanges();
}
return RedirectToAction("index");
}
}
else
{
ModelState.AddModelError("", "请选择文件");
return View();
}
}
三、结果