ASP.NET MVC 導入Excel文件


1.View部分內容示例如下:
<form method="post" enctype="multipart/form-data" action="/Position/ImportExcel" class="form-group">
     <input name="file" type="file" id="file" />
     <button id="btn_import" type="submit" class="btn btn-info">
            <span class="glyphicon glyphicon-pencil"></span>導入
     </button>
</form>
2.注意表單部分必須加 enctype = "multipart/form-data" ,否則后台代碼獲取File.ContentLength=0;
3.Controller部分
public ActionResult ImportExcel()
         {
              HttpPostedFileBase File = Request.Files["file"];
              string message = "";
               if (File.ContentLength > 0)
                {
                       var Isxls = System.IO.Path.GetExtension(File.FileName).ToString().ToLower();
                       if (Isxls != ".xls" && Isxls != ".xlsx")
                       {
                           message = "<script>alert('請上傳Excel文件'),window.location.href='/Position/Index'</script>";
                        }
                var FileName = File.FileName;//獲取文件夾名稱
                var path = Server.MapPath("~/FileExcel/" + FileName);
                File.SaveAs(path);//將文件保存到服務器
                PositionBLL bll = new PositionBLL();
                var list = bll.FileUpLoad(path);
                if (list.Count > 0)
                {
                    int num = bll.LoadFile(list);
                    if (num > 0)
                    {
                        message = "<script>alert('數據導入成功'),window.location.href='/Position/Index'</script>";
                    }
                }
                else
                {
                    message = "<script>alert('導入的數據不能為空'),window.location.href='/Position/Index'</script>";
                }
            }
            else
            {
                message = "<script>alert('請選擇上傳的文件'),window.location.href='/Position/Index'</script>";
            }
            return Content(message);
        	}
    }
4. 連接Excel的字符串 private const string ConnString2003 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended  Properties='Excel 8.0;HDR=Yes'";
lic List<PositionModel> FileUpLoad(string filePath)
  {
            DataSet ds = new DataSet();
            List<PositionModel> list = new List<PositionModel>();
            string strSQL = string.Format(ConnString2003, filePath);
            OleDbConnection conn = new OleDbConnection(strSQL);
            try
            {
                //判斷連接的狀態
                if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
                //
                DataTable tableName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                //獲取Excel的第一個Sheet名稱
                var sheetName = tableName.Rows[0]["TABLE_NAME"].ToString().Trim();
                string SQL = "select  * from [" + sheetName + "]";
                OleDbDataAdapter sa = new OleDbDataAdapter(SQL, conn);
                sa.Fill(ds);
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    PositionModel model = new PositionModel();
                    model.PositionName = dr["職位名稱"].ToString();
                    model.Qualification = dr["任職資格"].ToString();
                    model.Remark = dr["職位描述"].ToString();
                    list.Add(model);
                }
            }
           catch (Exception ex)
            {
                throw;
            }
            return list;
        }
     5.將數據循環遍歷到數據庫中
      public int LoadFile(List<PositionModel> list)
        {
            var num = 0;
           foreach (var item in list)
             {
                 PositionModel model = new PositionModel();
                 model.PositionName = item.PositionName;
                 model.Qualification = item.Qualification;
                 model.Remark = item.Remark;
                 num = dal.Add(model);
             }
            return num;
        }

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM