وارد کردن اطلاعات از فایل Excel در بانک اطلاعاتی در MVC
سه شنبه 3 شهریور 1394در این مقاله یاد خواهیم گرفت که اطلاعات یک فایل اکسل را در بانک اطلاعاتی ذخیره کنیم
برای شروع نیاز است که بانک اطلاعاتی برای دخیره اطلاعات ایجاد کنیم
]
حال ویژوال استادیو را باز کرده و یک پروژه از نوع MVC ایجاد میکنیم و یک یک کنترلر از نوع Home و سپس یک متد به نام Index نیز ایجاد میکنیم
public ActionResult Index() { return View(); }
حال برای متد Index یک View ایجاد میکنیم و سپس در View یک فایل آپلود ، برای آپلود فایل اکسل ایجاد میکنیم
@{ ViewBag.Title = "Index"; } <h2>مرجع تخصصی برنامه نویسان </h2> @using (Html.BeginForm("Index","Home", FormMethod.Post, new { enctype = "multipart/form-data" })) { <input type="file" name="file" /> <input type="submit" value="OK" /> }
حال در متد Index در قسمت post برای آپلود فایل اکسل به کار میرود در این متد از OledbConnection برای خواندن فایل های اکسل استفاده میشود در این نمونه ما دوتوع فایل اکسل را بررسی کردیم که کاربر حتما باید فایل های اکسل را با پسوند
. xls
( که برای فایل های اکسل از 2000 تا 2007 ) و پسوند ..xlsx (برای فایل های اکسل از 2007 به بالا ) میباشد و اگر در سیستم شما اکسل 2007 به بالا نصب است برای اجرا باید حتما این فایل را دانلود کنید
کد های مربوط به فایل هایی با پسوند .Xls :
Hide Copy Code excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
کد های مربوط به فایل هایی با پسوند .xlsx:
Hide Copy Code excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
سپس اطلاعات را از فایل اکسل گرفته و در DataTable میریزیم سپس اطلاعات DataTable را در بانک اطلاعاتی ذخیره میکنیم
[HttpPost] public ActionResult Index(HttpPostedFileBase file) { DataSet ds = new DataSet(); if (Request.Files["file"].ContentLength > 0) { string fileExtension = System.IO.Path.GetExtension(Request.Files["file"].FileName); if (fileExtension == ".xls" || fileExtension == ".xlsx") { string fileLocation = Server.MapPath("~/Content/") + Request.Files["file"].FileName; if (System.IO.File.Exists(fileLocation)) { System.IO.File.Delete(fileLocation); } Request.Files["file"].SaveAs(fileLocation); string excelConnectionString = string.Empty; excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; //connection String for xls file format. if (fileExtension == ".xls") { excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; } //connection String for xlsx file format. else if (fileExtension == ".xlsx") { excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; } //Create Connection to Excel work book and add oledb namespace OleDbConnection excelConnection = new OleDbConnection(excelConnectionString); excelConnection.Open(); DataTable dt = new DataTable(); dt = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if (dt == null) { return null; } String[] excelSheets = new String[dt.Rows.Count]; int t = 0; //excel data saves in temp file here. foreach (DataRow row in dt.Rows) { excelSheets[t] = row["TABLE_NAME"].ToString(); t++; } OleDbConnection excelConnection1 = new OleDbConnection(excelConnectionString); string query = string.Format("Select * from [{0}]", excelSheets[0]); using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, excelConnection1)) { dataAdapter.Fill(ds); } } if (fileExtension.ToString().ToLower().Equals(".xml")) { string fileLocation = Server.MapPath("~/Content/") + Request.Files["FileUpload"].FileName; if (System.IO.File.Exists(fileLocation)) { System.IO.File.Delete(fileLocation); } Request.Files["FileUpload"].SaveAs(fileLocation); XmlTextReader xmlreader = new XmlTextReader(fileLocation); // DataSet ds = new DataSet(); ds.ReadXml(xmlreader); xmlreader.Close(); } for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { string conn = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString; SqlConnection con = new SqlConnection(conn); string query = "Insert into Person(Name,Email,Mobile) Values('" + ds.Tables[0].Rows[i][0].ToString() + "','" + ds.Tables[0].Rows[i][1].ToString() + "','" + ds.Tables[0].Rows[i][2].ToString() + "')"; con.Open(); SqlCommand cmd = new SqlCommand(query, con); cmd.ExecuteNonQuery(); con.Close(); } } return View(); }
حال از برنامه اجرا بگیرید
- ASP.net MVC
- 4k بازدید
- 6 تشکر