توضیحات و دانلود

وارد كردن اطلاعات از Excel به پایگاه داده با استفاده از Entity Framework در ASP.Net MVC
0 0
وارد كردن اطلاعات از Excel به پایگاه داده با استفاده از Entity Framework در ASP.Net MVC

در  مقاله نشان میدهیم كه چگونه فایل های  دادهای موجود در فایل اكسل را به پایگاه داده با استفاده از Entity Framework در ASP.Net MVCRazor انتقال میدهیم.اطلاعات فایل اكسل آپلود شده با استفاده از كتابخانه OLEDB خوانده می شود و داده های خوانده شده به پایگاه داده SQL Server با استفاده از Entity Framework وارد می شوند.

پایگاه داده

ابتدا یك پایگاه داده و یك جدول با نام Costumer با فیلدهای زیر در آن ایجاد كرده:

  1. CustomerId  از نوع int  و بصورت identity
  2. Name  از نوع Varchar  كه اسامی را نگه داری میكند
  3. و فیلد Country  كه ملیتها را را نگه داری میكند از نوع varchar

توجه : اسكریپت sql  در قسمت دانلود قرر داده شده است.

فایل های اكسل نسخه 97-2003 و 2007 و بالاتر از  OLEDB مختلف استفاده می كنند و از این رو دو رشته اتصال مختلف در فایل Web.Config باید ایجاد كرد.

Property DataSource یك پارامتر {0} اختصاص داده شده است كه توسط مسیر واقعی فایل جایگزین می شود.

رشته های اتصال

<connectionStrings>
    <add name ="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'"/>
    <add name ="Excel07ConString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'"/>
</connectionStrings>

سپس فضای نام های زیر را به پروژه اضافه كنید:

فضای نام ها

using System.IO;
using System.Data;
using System.Data.OleDb;
using System.Configuration;

Controller

Controller متشكل از دو روش عمل است.

روش GET

در داخل این روش اطلاعات، به سادگی به View بازگردانده می شود.

POST  روش عملی برای اداره عملیات برای آپلود و خواندن فایل اكسل

این روش برای آپلود كردن فایل اكسل و وارد كرده اطلات به پایگاه داده استفاده میشود.

فایل اكسل آپلود شده در پوشه ای با نام Upload ها ذخیره می شود و سپس بر اساس فرمت آن یعنی XLS (97-2003) یا XLSX (2007 و بالاتر)، رشته اتصال مناسب از فایل Web.Config خوانده می شود و مكان {0} با مسیر جایگزین میشود.

با استفاده از نام Sheet fetched، یك عبارت SELECT اجرا می شود و تمام ركوردها از صفحه اكسل به DataTable وارد می شوند.

حالا یك حلقه بر روی ردیف DataTable اجرا می شود و هر یك از ركورد ها به جدول پایگاه داده با استفاده از Entity Framework ذخیره می شود .

public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            return View();
        }
 
        [HttpPost]
        public ActionResult Index(HttpPostedFileBase postedFile)
        {
            string filePath = string.Empty;
            if (postedFile != null)
            {
                string path = Server.MapPath("~/Uploads/");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
 
                filePath = path + Path.GetFileName(postedFile.FileName);
                string extension = Path.GetExtension(postedFile.FileName);
                postedFile.SaveAs(filePath);
 
                string conString = string.Empty;
                switch (extension)
                {
                    case ".xls"//اكسل 97-03.
                        conString = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
                        break;
                    case ".xlsx"//اكسل 2007 به بالا.
                        conString = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
                        break;
                }
 
                DataTable dt = new DataTable();
                conString = string.Format(conString, filePath);
 
                using (OleDbConnection connExcel = new OleDbConnection(conString))
                {
                    using (OleDbCommand cmdExcel = new OleDbCommand())
                    {
                        using (OleDbDataAdapter odaExcel = new OleDbDataAdapter())
                        {
                            cmdExcel.Connection = connExcel;
 
                            //گرفتن نام در سند اكسل.
                            connExcel.Open();
                            DataTable dtExcelSchema;
                            dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                            string sheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
                            connExcel.Close();
 
                            //خواندن اطلاعات از سند.
                            connExcel.Open();
                            cmdExcel.CommandText = "SELECT * From [" + sheetName + "]";
                            odaExcel.SelectCommand = cmdExcel;
                            odaExcel.Fill(dt);
                            connExcel.Close();
                        }
                    }
                }
 
                //وارد كردن اطلاعات به دیتا تیبل.
                CustomersEntities entities = new CustomersEntities();
                foreach (DataRow row in dt.Rows)
                {
                    entities.Customers.Add(new Customer
                    {
                        Name = row["Name"].ToString(),
                        Country = row["Country"].ToString()
                    });
                }
                entities.SaveChanges();
            }
 
            return View();
        }
    }

View

View شامل یك عنصر HTML FileUpload و دكمه Submit است كه در یك عنصر فرم قرار دارد.

فرم HTML با استفاده از روش Html.BeginForm كه پارامترهای زیر را می پذیرد ایجاد شده است.

  1.  ActionName  نام اكشن در این مورد نام Index است.
  2. ControllerName نام Controller كننده در این مورد نام Home است.
  3.  FormMethodروش فرم را یعنی GET یا POST مشخص می كند. در این مورد به POST تنظیم خواهد شد.
  4.  HtmlAttributes این آرایه اجازه می دهد تا مشخصات مشخصی را  تعیین كنیم. در اینجا ما باید enctype = "multipart / form-data"  مشخص كنیم كه برای آپلود فایلها ضروری است.
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    @using (Html.BeginForm("Index""Home"FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <input type="file" name="postedFile" />
        <input type="submit" value="Import" />
    }
</body>
</html>


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :