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

دراین مقاله میخواهیم کاربر یک فایل 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 داخل جدول ذخیره شده اند.

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