/// <summary>
/// 导入excel
/// </summary>
/// <returns></returns>
public ActionResult Import()
{
HttpPostedFileBase file = Request.Files["excel"];
//1、先保存上传的excel文件(这一步与上传图片流程一致)
string extName = Path.GetExtension(file.FileName).ToLower();
string newFileName = System.Guid.NewGuid().ToString();
string path = Server.MapPath("~/Files/");
file.SaveAs(path + newFileName + extName);
//2、读取excel文件(通过oledb将excel数据填充到datatable)
//HDR=Yes,这代表第一行是标题,不做为数据使用,IMEX的含义(0:写入,1:读取,2:读取与写入)
string filePath = path + newFileName + extName;//必须是物理路径
string conStr = "Provider=Microsoft.ACE.OLEDB.12.0; Persist Security Info=False;Data Source=" + filePath + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";
OleDbDataAdapter adp = new OleDbDataAdapter("select * From[Sheet1$]", conStr); //默认读取的Sheet1,你也可以把它封装变量,动态读取你的Sheet工作表
DataTable dt = new DataTable();
adp.Fill(dt);
//3、将table转化成list
List<Person> list = new List<Person>();
if (dt.Rows.Count > 0)
{
foreach (DataRow item in dt.Rows)
{
list.Add(new Person() {
ID = Convert.ToInt32(item["编号"]),
Name = item["姓名"].ToString(),
Age = Convert.ToInt32(item["年龄"]),
Sex = item["性别"].ToString()
});
}
}
//4、跨action传值用tempdata
//TempData["list"] = list;
//return RedirectToAction("List");
//5、指向新的view
return View("List", list);
}
/// <summary>
/// 通过第三方插件npoi导入excel
/// </summary>
/// <returns></returns>
public ActionResult ImportByNPOI()
{
HttpPostedFileBase file = Request.Files["excel"];
1、获取上传的图片(不用保存)
//string extName = Path.GetExtension(file.FileName).ToLower();
//string newFileName = System.Guid.NewGuid().ToString();
//string path = Server.MapPath("~/Files/");
//file.SaveAs(path + newFileName + extName);
//2、将上传文件转化成excel对象
NPOI.HSSF.UserModel.HSSFWorkbook excel = new NPOI.HSSF.UserModel.HSSFWorkbook(file.InputStream);
NPOI.HSSF.UserModel.HSSFSheet sheet = excel.GetSheetAt(0) as NPOI.HSSF.UserModel.HSSFSheet;
int rowNum = sheet.PhysicalNumberOfRows;//获取行数
List<Person> list = new List<Person>();
for (int i = 1; i < rowNum; i++)//从第2行开始
{
NPOI.HSSF.UserModel.HSSFRow row = sheet.GetRow(i) as NPOI.HSSF.UserModel.HSSFRow;
list.Add(new Person()
{
ID = Convert.ToInt32(row.GetCell(0).ToString()),
Name = row.GetCell(1).ToString(),
Age = Convert.ToInt32(row.GetCell(2).ToString()),
Sex = row.GetCell(3).ToString()
});
}
return View("List", list);
}