Yaz  Font K   lt Yaz  Font B y lt

Excel Tablosundaki Verileri SqlBulkCopy Metoduyla Veritabanındaki Tabloya Kaydetmek ve GridView Nesnesinde Göstermek

 

Merhaba arkadaşlar bu makalemizde Excel tablosundaki verileri listbox ta göstereceğiz. 

Microsoft artık excelden veri çekimiyle ilgili desteğini çekiyor. Eğer uygulamanızda Microsoft.Ace.Oledb.16.0 sağlayıcısı yerel makine kayıtlı değil hatası alırsanız, Microsoft sitesinden Microsoft Access Database Engine 2016 Redistributable indirebilirsiniz.

Ben bu uygulama için yukarıdaki linkten 32 bitlik olan sürümünü indirdim. Siz isterseniz 64 bitlik sürümünü de indirebilirsiniz. Bu sürümün normal kurulumunu yapamazsanız, komut satırını admin yetkilisiyle açarak kurulumu bilgisayarınıza yapabilirsiniz. Dosyanızın bulunduğu yolu yazmanız gerekecektir.

Örneğin; 

komut satırına aşağıdaki gibi yazıp kurulumu yapınız.

D:\ AccessDatabaseEngine.exe /quiet

Yukarıdaki işlemi başarılı bir şekilde yaptıktan sonra sayfamıza Fileupload, button ve GridView nesnesi ekleyelim.  

 

FileUpload nesnesini kullanarak excel dosyamızı seçiyoruz. Eklediğimiz butona tıklayarak ilk önce Server.MapPath de geçici klasöre excel sayfamızı kopyalıyoruz. Sonra SqlBulkCopy metoduyla daha önce oluşturduğumuz Sql tablosuna excel tablosundaki verileri kaydediyoruz. Son olarak veritabanındaki tabloya eklenen verileri GridView nesnesinde gösterilmesini sağlıyoruz. Ben bu örnekte Book isminde Sql tablosunu oluşturdum. Tabloya id (int), author (varchar50), book (varchar50) ve price (int) sütunlarını ekledim.

 

Resim1

Şekil 1

 

Resim2

Şekil 2

 

Resim3

Şekil 3

 

WebForm1.aspx.cs

 

using System;

using System.Collections.Generic;

using System.Data;

using System.Data.OleDb;

using System.Data.SqlClient;

using System.IO;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

namespace excel_sqlserver_sqlbulkcopy

{

    public partial class WebForm1 : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

 

        }

 

        protected void btnfileTransfer_Click(object sender, EventArgs e)

        {

            string connection = "";

            if (FileUpload1.HasFile)

            {

                string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);

                string fileExtend = Path.GetExtension(FileUpload1.PostedFile.FileName);

                string filePath = Server.MapPath("~/tempFile/" + fileName);

 

                FileUpload1.SaveAs(filePath);

               

                if (fileExtend == ".xls")

                {

                    //connection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2";

                    connection = @"Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" + filePath + "; Extended Properties ='Excel 8.0 xml; HDR = YES; '";

                }

                else if (fileExtend == ".xlsx")

                {

                    //connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2";

                    connection = @"Provider = Microsoft.ACE.OLEDB.16.0; Data Source =" + filePath + "; Extended Properties ='Excel 12.0 xml; HDR = YES; '";

                }

                

                OleDbConnection con = new OleDbConnection(connection);

                OleDbCommand cmd = new OleDbCommand();

                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Connection = con;

                OleDbDataAdapter da = new OleDbDataAdapter(cmd);

                DataTable dt = new DataTable();

 

                con.Open();

 

                DataTable dt2 = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

                

                string excelpageName = dt2.Rows[0]["Table_Name"].ToString();

                cmd.CommandText = "SELECT * FROM [" + excelpageName + "]";

                da.SelectCommand = cmd;

                da.Fill(dt);

                dt.Columns[0].ColumnName = "Id";

                dt.Columns[1].ColumnName = "Author";

                dt.Columns[2].ColumnName = "Book";

                dt.Columns[3].ColumnName = "Price";

                con.Close();

 

                GridView1.DataSource = dt;

                GridView1.DataBind();

               

                //SqlConnection connection2 = new SqlConnection("server=localhost; initial catalog=aspnetornek; integrated security=true");

                SqlConnection connection2 = new SqlConnection("Data Source=SIRIUS;Initial Catalog=dbase;User ID=sa;Password=2344;Integrated Security=true");

                SqlBulkCopy sqlbulkcpy = new SqlBulkCopy(connection2);

                

                connection2.Open();

                sqlbulkcpy.ColumnMappings.Add("Id""id");

                sqlbulkcpy.ColumnMappings.Add("Author""author");

                sqlbulkcpy.ColumnMappings.Add("Book""book");

                sqlbulkcpy.ColumnMappings.Add("Price""price");

                sqlbulkcpy.DestinationTableName = "dbo.book";

              

                sqlbulkcpy.WriteToServer(dt);

                connection2.Close();

                File.Delete(filePath);

            }

        }

    }

}

 

WebForm1.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="excel_sqlserver_sqlbulkcopy.WebForm1" %>

 

<!DOCTYPE html>

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

        <div>

            <asp:FileUpload ID="FileUpload1" runat="server" />

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

            <asp:Button ID="btnfileTransfer" runat="server" OnClick="btnfileTransfer_Click" Text="File Transfer" />

            <br />

            <br />

            <asp:GridView ID="GridView1" runat="server">

            </asp:GridView>

        </div>

    </form>

</body>

</html>

 

 

Bir makalenin daha sonuna geldik. Bir sonraki makalede görüşmek üzere. Bahadır ŞAHİN