• C# Ve VB İle Microsoft Excel 2007

    İlk Önce Excel 2007′yi Açarak AÅŸağıdaki Kayıtlarımızı Girelim Ve Products Olarak Kaydedelim

    ProductID    ProductName    Description
    1    ASP.NET 2008    Asp.Net Öğrenmek İçin İdeal Bi Kitap.
    2    C# 2008    C#’ın Kalbi Bu Kitapda Atıyor.
    3    SQL SERVER 2008    Beklenen Kitap Nihayet Çıktı.
    4    JAVA 2006    Java İçin Temel Bir Kaynak.
    5    VB 2006    Visual Basic Öğrenmek İsteyenlere Tavsiye Edilir.
    6    MySQL 2007    MySQL Bugünlerde Çok Revaçta Öğrenmek Lazım.
    7    ACCESS 2007    Vazgeçilemeyen Veritabanı Access Dünyanın Tercihi.
    8    PHP 2008    Php İsteyenler Buyrun Buradan.
    9    DELPHI 2008    Öğrenilmesi Gereken Bi Yapı.
    10    J# 2005    J# Microsoftun Taçsız Kralı.

    Visual Studio İle Visual Basic ASP.NET Web Projesi Oluşturalım,Hemen Ardından Daha Önce Oluşturduğumuz  Products.xlsx Dosyamızı App_Data İçerisine,
    Kopyala Yapıştır Yapalım Daha Sonra web.config Dosyamızda ConnectionStrings Ayarımızı Aşağıdaki Gibi Yapalım.

    <connectionStrings>
    <add name=”Excel”
    connectionString=”Provider=Microsoft.ACE.OLEDB.12.0; Data Source=|DataDirectory|\Products.xlsx; Extended Properties=Excel 12.0″
    providerName=”System.Data.OleDb”/>
    </connectionStrings>

    Default.aspx Sayfamızı’da AÅŸağıdaki Gibi Tasarlayalım.

    <%@ Page Language=”VB” AutoEventWireup=”false” CodeFile=”Default.aspx.vb” 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 runat=”server”>
    <title></title>

    <style type=”text/css”>

    table { background-color:Black; color:White; }
    .fe { background-color:yellowgreen; color:blue; }
    .de:hover { font-size:20px; }
    .he { color:Blue; font-size:medium; font-family:Sans-Serif Arial Helvetica; }
    .style1
    {
    width: 137px;
    }
    </style>

    </head>
    <body>
    <form id=”form1″ runat=”server”>
    <div>

    <table id=”myTable” runat=”server” align=”center”>
    <tr>
    <td><b>Ürünler</b></td>
    <td><asp:DropDownList ID=”drpProducts” Width=”205″ runat=”server”
    AutoPostBack=”true” /></td>
    </tr>
    <tr>
    <td><b>Ürün No</b></td>
    <td><asp:TextBox ID=”txtProductID” runat=”server” Width=”200″ /></td>
    </tr>
    <tr>
    <td><b>Ürün Adı</b></td>
    <td><asp:TextBox ID=”txtProductName” runat=”server” Width=”200″ /></td>
    </tr>
    <tr>
    <td valign=”top”><b>Ürün Açıklaması</b></td>
    <td><asp:TextBox ID=”txtDescription” runat=”server” Width=”300″ Height=”100″
    TextMode=”MultiLine” MaxLength=”200″ CssClass=”he” /></td>
    </tr>
    <tr>
    <td colspan=”2″ align=”right”>
    <asp:Button ID=”btnInsert” CssClass=”fe de” runat=”server” Text=”Kaydet” /> &nbsp;
    <asp:Button ID=”btnUpdate” CssClass=”fe de” runat=”server” Text=”Güncelle” /> &nbsp;
    <asp:Button ID=”txtClear” CssClass=”fe de” runat=”server” Text=”Temizle” />
    </td>
    </tr>
    </table>

    </div>
    </form>
    </body>
    </html>

    Products_VB

    Tasarım Kısmını’da Tamamladığımıza Göre Projemiz Üzerinde SaÄŸ Click Diyerek Projemize App_Code Klasörünü Ekleyelim
    Ve App_Code Klasörü İçerisine Products.vb İsimli Bir Sınıf Oluşturalım Ve Aşağıdaki Gibi Yazalım,

    Imports System.Data
    Imports System.Data.OleDb
    Imports c_Manager = System.Web.Configuration.WebConfigurationManager
    Imports Microsoft.VisualBasic

    Namespace Silo.Excel

    Public Class Products

    #Region “Variables For Products”

    Private _productID As Double
    Private _productName As String
    Private _aciklama As String

    #End Region

    #Region “Properties For Products”

    Public Property ProductID() As Double
    Get
    Return Me._productID
    End Get
    Set(ByVal value As Double)
    Me._productID = value
    End Set
    End Property

    Public Property ProductName() As String
    Get
    Return Me._productName
    End Get
    Set(ByVal value As String)
    Me._productName = value
    End Set
    End Property

    Public Property Aciklama() As String
    Get
    Return Me._aciklama
    End Get
    Set(ByVal value As String)
    Me._aciklama = value
    End Set
    End Property

    #End Region

    #Region “ConnectionStrings For Products”

    Public Shared ReadOnly Property _ConnectionString() As String
    Get
    Return c_Manager.ConnectionStrings(“Excel”).ConnectionString
    End Get
    End Property

    #End Region

    #Region “Fill For DropDownList Method”

    Public Shared Sub DoldurDropDownList(ByRef myDropDownList As DropDownList)

    Dim dt As DataTable = Nothing

    Using cn As New OleDbConnection(_ConnectionString)
    Dim strSELECT As String = “SELECT ProductID,ProductName,Description FROM [Sayfa1$]”
    Using com As New OleDbCommand(strSELECT, cn)
    Dim da As New OleDbDataAdapter(com)
    dt = New DataTable()

    If com.Connection.State <> ConnectionState.Open Then
    com.Connection.Open()
    End If
    da.Fill(dt)
    com.Connection.Close()

    myDropDownList.DataTextField = “ProductName”
    myDropDownList.DataValueField = “ProductID”

    myDropDownList.DataSource = dt
    myDropDownList.DataBind()

    End Using
    End Using
    End Sub

    #End Region

    #Region “Get Products For DropDownList Method”

    Public Shared Function FillDropDownList(ByRef myDropDownList As DropDownList) As Products

    Dim ProductID As Integer = Integer.Parse(myDropDownList.SelectedValue.ToString())
    Dim myProducts As New Products()

    Using cn As New OleDbConnection(_ConnectionString)

    Dim strSELECT As String = “SELECT ProductID,ProductName,Description FROM [Sayfa1$] WHERE ProductID=?”

    Using com As New OleDbCommand(strSELECT, cn)

    com.Parameters.AddWithValue(“?”, ProductID)

    If com.Connection.State <> ConnectionState.Open Then
    com.Connection.Open()
    End If

    Dim dr As OleDbDataReader = com.ExecuteReader(CommandBehavior.CloseConnection)
    Dim dogruMu As Boolean = IIf(dr.HasRows, True, False)

    If dogruMu Then
    While dr.Read()
    myProducts.ProductID = dr.GetDouble(0)
    myProducts.ProductName = dr.GetString(1)
    myProducts.Aciklama = dr.GetString(2)
    End While
    End If
    dr.Close()

    End Using
    End Using

    Return myProducts

    End Function

    #End Region

    #Region “Save For Products Method”

    Public Shared Sub SaveProducts(ByRef myProducts As Products)

    Try
    Using cn As New OleDbConnection(_ConnectionString)

    Dim strSELECT As String = “INSERT INTO [Sayfa1$] VALUES(?,?,?)”

    Using com As New OleDbCommand(strSELECT, cn)

    com.Parameters.AddWithValue(“?”, myProducts.ProductID)
    com.Parameters.AddWithValue(“?”, myProducts.ProductName)
    com.Parameters.AddWithValue(“?”, myProducts.Aciklama)

    If com.Connection.State <> ConnectionState.Open Then
    com.Connection.Open()
    End If
    com.ExecuteNonQuery()
    com.Connection.Close()
    HttpContext.Current.Response.Write(“Kayıt BaÅŸarılı.”)

    End Using
    End Using
    Catch ex As Exception
    HttpContext.Current.Response.Write(“Insert Hatası OluÅŸtu ?<br />” & vbCrLf & ex.Message)
    End Try

    End Sub

    #End Region

    #Region “Update For Products Method”

    Public Shared Sub UpdateProducts(ByRef myDropDownList As DropDownList, ByRef myProducts As Products)

    Try
    Using cn As New OleDbConnection(_ConnectionString)

    Dim ProductID As Integer = Integer.Parse(myDropDownList.SelectedValue.ToString())
    Dim strUPDATE As String = “UPDATE [Sayfa1$] SET ProductID=?, ProductName=?, Description=? WHERE ProductID=?”

    Using com As New OleDbCommand(strUPDATE, cn)

    com.Parameters.AddWithValue(“?”, myProducts.ProductID)
    com.Parameters.AddWithValue(“?”, myProducts.ProductName)
    com.Parameters.AddWithValue(“?”, myProducts.Aciklama)
    com.Parameters.AddWithValue(“?”, ProductID)

    If com.Connection.State <> ConnectionState.Open Then
    com.Connection.Open()
    End If

    com.ExecuteNonQuery()
    HttpContext.Current.Response.Write(“Güncelleme BaÅŸarılı Oldu.”)
    com.Connection.Close()

    End Using
    End Using

    Catch ex As Exception
    HttpContext.Current.Response.Write(“Güncelleme Hatası OluÅŸtu ?<br />.” & vbCrLf & ex.Message)
    End Try

    End Sub

    #End Region

    #Region “Clear Table Method”

    Public Shared Sub ClearTable(ByRef myTable As HtmlTable)

    For Each myRow As HtmlTableRow In myTable.Rows

    For Each myCell As HtmlTableCell In myRow.Cells

    For Each myControl As Control In myCell.Controls

    If (TypeOf myControl Is TextBox) Then

    Dim myText As TextBox = CType(myControl, TextBox)
    myText.Text = “”

    End If

    Next
    Next
    Next

    End Sub

    #End Region

    End Class

    End Namespace

    Products Class’ımızı Tamamladığımıza Göre Default.aspx.vb Kısmını’da AÅŸağıdaki Gibi Yazalım.

    Imports Silo.Excel

    Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not IsPostBack Then
    Products.DoldurDropDownList(drpProducts)
    End If

    End Sub

    Protected Sub btnInsert_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnInsert.Click

    Dim myProducts As New Products()

    myProducts.ProductID = txtProductID.Text
    myProducts.ProductName = txtProductName.Text
    myProducts.Aciklama = txtDescription.Text

    Products.SaveProducts(myProducts)

    End Sub

    Protected Sub drpProducts_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles drpProducts.SelectedIndexChanged

    Dim myProducts As Products = Products.FillDropDownList(drpProducts)

    txtProductID.Text = myProducts.ProductID
    txtProductName.Text = myProducts.ProductName
    txtDescription.Text = myProducts.Aciklama

    End Sub

    Protected Sub btnUpdate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnUpdate.Click

    Dim myProducts As New Products()

    myProducts.ProductID = txtProductID.Text
    myProducts.ProductName = txtProductName.Text
    myProducts.Aciklama = txtDescription.Text

    Products.UpdateProducts(drpProducts, myProducts)
    Products.FillDropDownList(drpProducts)

    End Sub

    Protected Sub txtClear_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtClear.Click
    Products.ClearTable(myTable)
    End Sub

    End Class

    Products_C#

    Excel Visual Basic Tarafını Bitirmiş Olduk Şimdi Sıra C# Kısmına Geldi Dilerseniz Vakit Kaybetmeden C# İle Yeni Bir ASP.NET Web Projesi Oluşturalım,
    Visual Basic’de Yaptığımız İşlemlerin Aynısını C# İçin’de Yapalım İlk Önce App_Data İçerisinne Products.xlsx Dosyamızı Kopyala Yapıştır Yapıyoruz,
    Hemen Ardından ConnectionString BaÄŸlantımızı web.config Dosyamızın İçerisine Yukarıda Visual Basic’de Yaptığımız Gibi Ayarlıyoruz,
    Daha Sonra Projemize Sağ Click App_Code Klasörünü Ekliyoruz Ve Urunler İsminde Bir Class Oluşturuyoruz Ve Aşağıdaki Gibi Yazıyoruz,
    Unutmadan C# Default.aspx Sayfamızın Tasarımı Aynı Visual Basic’deki Gibidir Sadece Buttonların Click Event’larını Ve DropDownList _SelectedIndexChanged  Silip Yeniden OluÅŸturmamız Gerekli
    Urunler Class’ımız AÅŸağıdaki Gibidir.

    using System;
    using System.Data;
    using System.Configuration;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;

    using System.Data.OleDb;
    using c_Manager = System.Web.Configuration.WebConfigurationManager;

    namespace Silo.AspNet
    {
    public class Urunler
    {

    #region Variables For Products

    private double _productid;
    private string _productname;
    private string _aciklama;

    #endregion

    #region Properties For Products

    public double ProductID
    { get { return this._productid; } set { this._productid = value; } }

    public string ProductName
    { get { return this._productname; } set { this._productname = value; } }

    public string Aciklama
    { get { return this._aciklama; } set { this._aciklama = value; } }

    #endregion

    #region ConnectionStrings For Products

    public static string connectionString
    {
    get { return c_Manager.ConnectionStrings["Excel"].ConnectionString; }
    }

    #endregion

    #region Fill For DropDownList Method

    public static void DoldurDropDownList(DropDownList myDropDownList)
    {
    DataTable myDataTable = null;
    using (OleDbConnection cn = new OleDbConnection(connectionString))
    {
    string strSELECT = “SELECT ProductID,ProductName,Description FROM [Sayfa1$]“;

    using (OleDbCommand com = new OleDbCommand(strSELECT, cn))
    {
    OleDbDataAdapter da = new OleDbDataAdapter(com);
    myDataTable = new DataTable();

    if (com.Connection.State == ConnectionState.Closed)
    com.Connection.Open();

    da.Fill(myDataTable);
    com.Connection.Close();

    myDropDownList.DataTextField = “ProductName”;
    myDropDownList.DataValueField = “ProductID”;

    myDropDownList.DataSource = myDataTable.DefaultView;
    myDropDownList.DataBind();
    }
    }
    }

    #endregion

    #region Get Products For DropDownList

    public static Urunler UrunDoldursana(DropDownList myDropDownList)
    {
    int ProductID = int.Parse(myDropDownList.SelectedValue.ToString());
    Urunler myProducts = new Urunler();

    using (OleDbConnection cn = new OleDbConnection(connectionString))
    {
    string strSELECT = “SELECT ProductID,ProductName,Description FROM [Sayfa1$] WHERE ProductID=?”;

    using (OleDbCommand com = new OleDbCommand(strSELECT, cn))
    {
    com.Parameters.AddWithValue(“?”, ProductID);

    if (com.Connection.State == ConnectionState.Closed)
    com.Connection.Open();

    OleDbDataReader reader = com.ExecuteReader(CommandBehavior.CloseConnection);

    bool dogruMu = reader.HasRows ? true : false;

    if (dogruMu)
    {
    while (reader.Read())
    {
    myProducts.ProductID = reader.GetDouble(0);
    myProducts.ProductName = reader["ProductName"].ToString();
    myProducts.Aciklama = reader["Description"].ToString();

    //ID.Text = reader.GetDouble(0).ToString();
    //Ad.Text = reader.GetString(1);
    //Aciklama.Text = reader.GetString(2);
    }
    }
    reader.Close();
    }
    }
    return myProducts;
    }

    #endregion

    #region Save For Products Method

    public static void UrunKaydetsene(Urunler myProducts)
    {
    try
    {
    using (OleDbConnection cn = new OleDbConnection(connectionString))
    {
    string strSELECT = “INSERT INTO [Sayfa1$] VALUES(?,?,?)”;

    using (OleDbCommand com = new OleDbCommand(strSELECT, cn))
    {
    com.Parameters.AddWithValue(“?”, myProducts.ProductID);
    com.Parameters.AddWithValue(“?,”, myProducts.ProductName);
    com.Parameters.AddWithValue(“?,”, myProducts.Aciklama);

    if (com.Connection.State == ConnectionState.Closed)
    com.Connection.Open();

    com.ExecuteNonQuery();

    com.Connection.Close();
    HttpContext.Current.Response.Write(“BaÅŸarılı Kayıt !”);
    }
    }
    }
    catch (Exception ex)
    {
    HttpContext.Current.Response.Write(“Kayıt Hatası OluÅŸtu !<br />” + ex.Message);
    }

    }

    #endregion

    #region Update For Products Method

    public static void UrunGuncellesene(DropDownList myDropDownList, Urunler myProducts)
    {
    try
    {
    using (OleDbConnection cn = new OleDbConnection(connectionString))
    {
    int ProductID = int.Parse(myDropDownList.SelectedValue.ToString());

    string strSELECT =
    “UPDATE [Sayfa1$] SET ProductID = ?, ProductName = ?, Description = ? ” +
    “WHERE ProductID = ?”;

    using (OleDbCommand com = new OleDbCommand(strSELECT, cn))
    {
    com.Parameters.AddWithValue(“?”, myProducts.ProductID);
    com.Parameters.AddWithValue(“?,”, myProducts.ProductName);
    com.Parameters.AddWithValue(“?,”, myProducts.Aciklama);
    com.Parameters.AddWithValue(“?”, ProductID);

    if (com.Connection.State == ConnectionState.Closed)
    com.Connection.Open();

    com.ExecuteNonQuery();

    com.Connection.Close();
    HttpContext.Current.Response.Write(“BaÅŸarılı Güncelleme !”);
    }

    }
    }
    catch (Exception ex)
    {
    HttpContext.Current.Response.Write(“Güncelleme Hatası OluÅŸtu !<br />” + ex.Message);
    }
    }

    #endregion

    #region Clear Table Method

    public static void Clear(HtmlTable myTable)
    {
    foreach (HtmlTableRow myRow in myTable.Rows)
    {
    foreach (HtmlTableCell myCell in myRow.Cells)
    {
    foreach (Control myControl in myCell.Controls)
    {
    if (myControl is TextBox)
    ((TextBox)myControl).Text = “”;
    }
    }
    }

    }

    #endregion
    }
    }

    Sıra Geldi Default.aspx.cs Tarafına Onuda aşağıdaki Gibi Yazıyoruz.

    using System;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;

    using Silo.AspNet;

    public partial class _Default : System.Web.UI.Page
    {

    protected void Page_Load(object sender, EventArgs e)
    {
    if(!this.Page.IsPostBack)
    Urunler.DoldurDropDownList(drpProducts);
    }

    protected void txtClear_Click(object sender, EventArgs e)
    {
    Urunler.Clear(myTable);
    }

    protected void drpProducts_SelectedIndexChanged(object sender, EventArgs e)
    {
    Urunler myProducts = Urunler.UrunDoldursana(drpProducts);

    txtProductID.Text = myProducts.ProductID.ToString();
    txtProductName.Text = myProducts.ProductName;
    txtDescription.Text = myProducts.Aciklama;
    }

    protected void btnInsert_Click(object sender, EventArgs e)
    {
    Urunler myProducts = new Urunler();
    myProducts.ProductID = double.Parse(txtProductID.Text);
    myProducts.ProductName = txtProductName.Text;
    myProducts.Aciklama = txtDescription.Text;

    Urunler.UrunKaydetsene(myProducts);
    Urunler.DoldurDropDownList(drpProducts);
    }

    protected void btnUpdate_Click(object sender, EventArgs e)
    {
    Urunler myProducts = new Urunler();
    myProducts.ProductID = double.Parse(txtProductID.Text);
    myProducts.ProductName = txtProductName.Text;
    myProducts.Aciklama = txtDescription.Text;

    Urunler.UrunGuncellesene(drpProducts, myProducts);
    Urunler.DoldurDropDownList(drpProducts);
    }
    }

    Evet Artık Her İki Projemizde Hazır Olduğuna Göre Çalıştırıp Sonuca Bakabiliriz
    Sonuç Aşağıdaki Gibi Olacaktır.

    Resim2

    Resim3

    Bu Makalemizde Excel 2007′yi Hem C# Hemde Visual Basic Kullanarak Aynı Bir Veritabanı Gibi Select,Insert,Update İşlemlerini GerçekleÅŸtirmiÅŸ Olduk,
    Ne Yazık Ki Microsoft’un Excel İçin Delete Yöntemi Yok Dolayısıyla Delete İşlemini GerçekleÅŸtiremedik,
    Bir Makalemizin Daha Sonuna Geldik Arkadaşlar Faydalı Olması Dileğiyle Görüşmek Üzere.

    Blog Widget by LinkWithin

    Etiketler:, , , ,

Yorum Yapın

You must be logged in to post a comment.