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

خواندن و وارد کردن برگه اکسل به پایگاه داده SQL Server در ASP.Net
0 0
خواندن و وارد کردن برگه اکسل به پایگاه داده SQL Server در ASP.Net

با سلام در این مقاله، با مثال، نحوه قرار دادن داده ها از صفحه اکسل به جدول پایگاه داده SQL Server در ASP.Net با استفاده از C # و VB.Net توضیح خواهیم داد.
فایل اکسل آپلود شده و در یک پوشه در سرور کپی می شود. سپس با استفاده از روش نگهداري شده و OLEDB، داده ها از پوشه اکسل خوانده و وارد جدول پایگاه داده SQL Server خواهد شد.
بانک اطلاعاتی
 یک جدول ساده به نام tblPersons ایجاد میکنیم که طرح آن در زیر نشان داده شده است

توجه :

شما می توانید جدول پایگاه داده SQL را با کلیک روی لینک دانلود کنید.فایل SQL را دانلود کنید
روش های ذخیره شده برای وارد کردن داده های اکسل
اکسل فرمت 97 - 2003

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE spx_ImportFromExcel03
    @SheetName varchar(20),
    @FilePath varchar(100),
    @HDR varchar(3),
    @TableName varchar(50)
AS
BEGIN
    DECLARE @SQL nvarchar(1000)
           
    IF OBJECT_ID (@TableName,'U') IS NOT NULL
      SET @SQL = 'INSERT INTO ' + @TableName + ' SELECT * FROM OPENDATASOURCE'
    ELSE
      SET @SQL = 'SELECT * INTO ' + @TableName + ' FROM OPENDATASOURCE'
 
    SET @SQL = @SQL + '(''Microsoft.Jet.OLEDB.4.0'',''Data Source='
    SET @SQL = @SQL + @FilePath + ';Extended Properties=''''Excel 8.0;HDR='
    SET @SQL = @SQL + @HDR + ''''''')...['
    SET @SQL = @SQL + @SheetName + ']'
    EXEC sp_executesql @SQL
END
GO

اکسل فرمت 2007 به بالا

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE spx_ImportFromExcel07
   @SheetName varchar(20),
   @FilePath varchar(100),
   @HDR varchar(3),
   @TableName varchar(50)
AS
BEGIN
    DECLARE @SQL nvarchar(1000)
     
    IF OBJECT_ID (@TableName,'U') IS NOT NULL
      SET @SQL = 'INSERT INTO ' + @TableName + ' SELECT * FROM OPENDATASOURCE'
    ELSE
      SET @SQL = 'SELECT * INTO ' + @TableName + ' FROM OPENDATASOURCE'
 
    SET @SQL = @SQL + '(''Microsoft.ACE.OLEDB.12.0'',''Data Source='
    SET @SQL = @SQL + @FilePath + ';Extended Properties=''''Excel 12.0;HDR='
    SET @SQL = @SQL + @HDR + ''''''')...['
    SET @SQL = @SQL + @SheetName + ']'
    EXEC sp_executesql @SQL
END
GO

رشته اتصال برای اکسل 2003 و اکسل 2007 و یا فرمت های بالاتر
رشته های اتصال برای فایلهای اکسل 2003 و 2007 و یا فرمت های بالاتر در فایل Web.Config مشخص شده است.

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

کدHTML
کد HTML حاوی کنترل FileUpload در ASP.Net و یک دکمه برای فرآیند آپلود فایل است.

<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button Text="Upload" OnClick="Upload" runat="server" />

فضاهای نام
شما باید فضای نامهای زیر را وارد کنید.
C #

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

VB.Net

Imports System.IO
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.SqlClient
Imports System.Configuration

آپلود و قرار دادن ردیف از اکسل به جدول SQL Server
با کلیک بر روی دکمه ,فایل اکسل  آپلود می شود و سپس در داخل یک پوشه به نام فایل ها ذخیره می شود .
سپس بر اساس فرمت فایل اکسل یعنی xls یا xlsx، اتصال مناسب از فایل Web.Config گرفته می شود.آنگاه یک ارتباط با فایل اکسل ایجاد و نام اولین صفحه به یک متغیر خوانده می شود.
توجه :

تمام فایلهای اکسل را با ردیف اول به عنوان ردیف سرصفحه که حاوی نام ستون است، در نظر می گیریم،     اگر فایل اکسل ردیف سرصفحه ای  نداشته باشد می توانید HDR = 'No' را تنظیم کنید.
سپس بر اساس فرمت فایل اکسل یعنی xls یا xlsx، ذخیره می شود و پارامترهای زیر منتقل می شوند.
SheetName - نام برگه اکسل به عنوان خوانده شده.
FilePath - مسیر کامل فایل اکسل.
HDR - مقدار YES اگر فایل اکسل شما Header Row else NO باشد.
TableName - نام جدول در پایگاه داده SQL Server.
C #

protected void Upload(object sender, EventArgs e)
{
    //Upload and save the File.
    string excelPath = Server.MapPath("~/Files/") + Path.GetFileName(FileUpload1.PostedFile.FileName);
    FileUpload1.SaveAs(excelPath);
 
    string conString = string.Empty;
    string storedProc = string.Empty;
    string sheet1 = string.Empty;
    string extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
    switch (extension)
    {
        case ".xls": //Excel 97-03.
            storedProc = "spx_ImportFromExcel03";
            conString = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
            break;
        case ".xlsx": //Excel 07 or higher.
            storedProc = "spx_ImportFromExcel07";
            conString = ConfigurationManager.ConnectionStrings["Excel07+ConString"].ConnectionString;
            break;
 
    }
 
    //Read the Sheet Name.
    conString = string.Format(conString, excelPath);
    using (OleDbConnection excel_con = new OleDbConnection(conString))
    {
        excel_con.Open();
        sheet1 = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0]["TABLE_NAME"].ToString();
        excel_con.Close();
    }
 
    //Call the Stored Procedure to import Excel data in Table.
    string constr = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand(storedProc, con))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@SheetName", sheet1);
            cmd.Parameters.AddWithValue("@FilePath", excelPath);
            cmd.Parameters.AddWithValue("@HDR", "YES");
            cmd.Parameters.AddWithValue("@TableName", "tblPersons");
            cmd.Connection = con;
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
        }
    }
}

VB.Net

Protected Sub Upload(ByVal sender As Object, ByVal e As EventArgs)
    'Upload and save the File.
    Dim excelPath As String = Server.MapPath("~/Files/") + Path.GetFileName(FileUpload1.PostedFile.FileName)
    FileUpload1.SaveAs(excelPath)
    Dim conString As String = String.Empty
    Dim storedProc As String = String.Empty
    Dim sheet1 As String = String.Empty
    Dim extension As String = Path.GetExtension(FileUpload1.PostedFile.FileName)
 
    Select Case extension
        Case ".xls" 'Excel 97-03.
            storedProc = "spx_ImportFromExcel03"
            conString = ConfigurationManager.ConnectionStrings("Excel03ConString").ConnectionString
        Case ".xlsx" 'Excel 07 or higher.
            storedProc = "spx_ImportFromExcel07"
            conString = ConfigurationManager.ConnectionStrings("Excel07+ConString").ConnectionString
    End Select
 
    'Read the Sheet Name.
    conString = String.Format(conString, excelPath)
    Using excel_con As OleDbConnection = New OleDbConnection(conString)
        excel_con.Open()
        sheet1 = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing).Rows(0)("TABLE_NAME").ToString()
        excel_con.Close()
    End Using
 
    'Call the Stored Procedure to import Excel data in Table.
    Dim constr As String = ConfigurationManager.ConnectionStrings("conString").ConnectionString
    Using con As SqlConnection = New SqlConnection(constr)
        Using cmd As SqlCommand = New SqlCommand(storedProc, con)
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.AddWithValue("@SheetName", sheet1)
            cmd.Parameters.AddWithValue("@FilePath", excelPath)
            cmd.Parameters.AddWithValue("@HDR", "YES")
            cmd.Parameters.AddWithValue("@TableName", "tblPersons")
            cmd.Connection = con
            con.Open()
            cmd.ExecuteNonQuery()
            con.Close()
        End Using
    End Using
End Sub


فایل اکسل

جدول فایل اکسل حاوی اطلاعات

 


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

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