درج رکوردها از فایل Excel به جدول پایگاه داده

دوشنبه 13 بهمن 1393

دراین مقاله میخواهیم کاربر یک فایل excel حاوی اطلاعات را آپلود کند و داده های آن در جدول در پایگاه داده ذخیره شود

درج رکوردها از فایل Excel  به جدول پایگاه داده

یک جدول به نام Employee در پایگاه داده sql میسازیم :

CREATE TABLE [dbo].[Employee](  
    [id] [int] IDENTITY(1,1) NOT NULL,  
    [Name] [varchar](50) NULL,  
    [City] [varchar](50) NULL,  
    [Address] [varchar](50) NULL,  
    [Designation] [varchar](50) NULL,  
 CONSTRAINT [PK_Employee] PRIMARY KEY CLUSTERED   
(  
    [id] ASC  
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]  
) ON [PRIMARY]  

جدول در حالت design :

یک فایل excel با اطلاعات زیر میسازیم :

حال ویژوال استدیو خود را باز کنید و یک برنامه از نوع web بسازید و در پنجره Solution Explorer روی پروژه کلیک راست کنید ویک صفحه جدید به پروژه خود اضافه کنید و به صفحه خود یک دکمه و یک فایل آپلود اضافه کنید صفحه default.aspx در حالت سورس به شکل زیر خواهد شد:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>  
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head id="Head1" runat="server">  
    <title>Article by Vithal Wadje</title>  
</head>  
<body bgcolor="blue">  
    <form id="form1" runat="server">  
    <div style="color: White;">  
        <h4>  
            Article for C#Corner  
        </h4>  
        <table>  
            <tr>  
                <td>  
                    Select File  
                </td>  
                <td>  
                    <asp:FileUpload ID="FileUpload1" runat="server" />  
                </td>  
                <td>  
                </td>  
                <td>  
                    <asp:Button ID="Button1" runat="server" Text="Upload" OnClick="Button1_Click" />  
                </td>  
            </tr>  
        </table>  
    </div>  
    </form>  
</body>  
</html>  

ودر صفحه  Default.aspx.cs توسط کد زیر یک اتصال oledb برای فایل excel میزنم:

private void ExcelConn(string FilePath)  
    {  
  
        constr = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES;""", FilePath);  
        Econ = new OleDbConnection(constr);  
       
    }  

یک تابع برای اتصال به sql مینویسیم:

rivate void connection()  
    {  
        sqlconn = ConfigurationManager.ConnectionStrings["SqlCom"].ConnectionString;  
        con = new SqlConnection(sqlconn);  
      
    }  

یک تابع برای خواندن و درج داده های فایل اکسل به پایگاه داده مینویسیم:

private void InsertExcelRecords(string FilePath)  
   {  
       ExcelConn(FilePath);  
  
       Query = string.Format("Select [Name],[City],[Address],[Designation] FROM [{0}]", "Sheet1$");  
       OleDbCommand Ecom = new OleDbCommand(Query, Econ);  
       Econ.Open();  
  
       DataSet ds=new DataSet();  
       OleDbDataAdapter oda = new OleDbDataAdapter(Query, Econ);  
       Econ.Close();  
       oda.Fill(ds);  
      DataTable Exceldt = ds.Tables[0];  
      connection();  
      //creating object of SqlBulkCopy    
      SqlBulkCopy objbulk = new SqlBulkCopy(con);  
      //assigning Destination table name    
      objbulk.DestinationTableName = "Employee";  
      //Mapping Table column    
      objbulk.ColumnMappings.Add("Name", "Name");  
      objbulk.ColumnMappings.Add("City", "City");  
      objbulk.ColumnMappings.Add("Address", "Address");  
      objbulk.ColumnMappings.Add("Designation", "Designation");  
      //inserting Datatable Records to DataBase    
      con.Open();  
      objbulk.WriteToServer(Exceldt);  
      con.Close();  
   }  

حال باید تابع بالا را در رویداد کلیک دکمه فراخوانی کنیم:

protected void Button1_Click(object sender, EventArgs e)  
    {  
        string CurrentFilePath = Path.GetFullPath(FileUpload1.PostedFile.FileName);  
        InsertExcelRecords(CurrentFilePath);  
    }  

صفحه Defualt.aspx.cs به شکل زیر خواهد شد:

using System;  
using System.Data;  
using System.IO;  
using System.Data.OleDb;  
using System.Configuration;  
using System.Data.SqlClient;  
  
public partial class _Default : System.Web.UI.Page  
{  
    OleDbConnection Econ;  
    SqlConnection con;  
  
    string constr,Query,sqlconn;  
    protected void Page_Load(object sender, EventArgs e)  
    {  
  
  
    }  
  
    private void ExcelConn(string FilePath)  
    {  
  
        constr = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES;""", FilePath);  
        Econ = new OleDbConnection(constr);  
       
    }  
    private void connection()  
    {  
        sqlconn = ConfigurationManager.ConnectionStrings["SqlCom"].ConnectionString;  
        con = new SqlConnection(sqlconn);  
      
    }  
    
  
    private void InsertExcelRecords(string FilePath)  
    {  
        ExcelConn(FilePath);  
  
        Query = string.Format("Select [Name],[City],[Address],[Designation] FROM [{0}]", "Sheet1$");  
        OleDbCommand Ecom = new OleDbCommand(Query, Econ);  
        Econ.Open();  
  
            DataSet ds=new DataSet();  
            OleDbDataAdapter oda = new OleDbDataAdapter(Query, Econ);  
            Econ.Close();  
            oda.Fill(ds);  
            DataTable Exceldt = ds.Tables[0];  
       connection();  
       //creating object of SqlBulkCopy    
       SqlBulkCopy objbulk = new SqlBulkCopy(con);  
       //assigning Destination table name    
       objbulk.DestinationTableName = "Employee";  
       //Mapping Table column    
       objbulk.ColumnMappings.Add("Name", "Name");  
       objbulk.ColumnMappings.Add("City", "City");  
       objbulk.ColumnMappings.Add("Address", "Address");  
       objbulk.ColumnMappings.Add("Designation", "Designation");  
       //inserting Datatable Records to DataBase    
       con.Open();  
       objbulk.WriteToServer(Exceldt);  
       con.Close();  
 
    }  
    protected void Button1_Click(object sender, EventArgs e)  
    {   
        string CurrentFilePath = Path.GetFullPath(FileUpload1.PostedFile.FileName);  
        InsertExcelRecords(CurrentFilePath);  
    }  
}  

حالا میتونید برنامه خود را اجرا کنید:

حال بعد از انتخاب فایل اکسل روی دکمه upload کلیک کنید :

همانطور که مشاهده میکنید رکورد های داخل فایل excel داخل جدول ذخیره شده اند.

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید