درج رکوردها از فایل Excel به جدول پایگاه داده
دوشنبه 13 بهمن 1393دراین مقاله میخواهیم کاربر یک فایل 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 داخل جدول ذخیره شده اند.
- ASP.net
- 6k بازدید
- 5 تشکر