Bu yazımızda VB.Net ile excel sayfalarına ulaşmayı, istediğimiz sütunları görüntülemeyi, gerektiğinde değişikik yapmayı göreceğiz. Excel objesini kullanmak için Excel kütüphanesini programımıza eklemeliyiz. Bunun için; VS.Net içindeki menülerden Project menüsü içindeki “Add Referance” seçeneğini seçip uygun bir kütüphaneyi ğrogramımıza ekleyelim.(Office XP için Microsoft Excel 10.0 Object Library)
Şimdi programımıza başlayabiliriz. Önce bir excel objesi yaratmalıyız.
Bir Excel objesi yaratıyoruz
Dim objexl As New Excel.Application
yolu belirtilen bir excel dosyası acıyoruz
objexl.Workbooks.Open("c:\deneme.xls")
acılan excel dosyası içindeki kullanacağımız worksheeti seçiyoruz.
Dim wsheet As New Excel.Worksheet
wsheet = objexl.ActiveWorkbook.ActiveSheet
Böylelikle bir excel dosyasına bağlantı kurmuş olduk. objexl.Visible = True yazarak bağlandığımız Excel dosyasını ekranda gösterebiliriz. Bundan sonra istediğimiz hücrede istediğimiz değişikliği yapabiliriz. Bunun içinde aşağıdaki kodları yazalım bakalım ne gibi değişiklikler oluyor.
bu komut ile sol üst köşedeki hücreye yeni birşeyler girebiliriz.
wsheet.Cells(1, 1) = "TOP LEFT CELL"
bu komut ile de A2 hücresinden K10 hücresine
kadar bütün hücreleri "a" karakteriyle dolduruyoruz.
wsheet.Range("A2:K10") = "a"
objexl.Visible = True
Şimdi basit bir filtreleme programı yapalım. Bilgisayar firmasının birçok müşteri vardır. Her müşterinin kayıtları bir excel dosyasında tutulmaktadır. Bunun için 2 listbox yapalım. Bunların ilki isimleri tutsun 2.si ise parçaları tutsun. Bu parçalardan ve isimlerden istediklerimizi seçtiğimizde ekrandaki 3. bir listboxta bunları listeleyebilelim. Tabi aramak (filtrelemek) için bir buton yeni tarama için bir buton ve bir End butonu da ekleyelim.
Önce program başlarken Load kısmına aşağıdaki kodları yazalım.
Dim objexl As New Excel.Application
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)_ Handles MyBase.Load
Dim i As Integer
objexl.Workbooks.Open("c:\tanimlar.xls")
Dim wsheet As New Excel.Worksheet
wsheet = objexl.ActiveWorkbook.ActiveSheet
adları ve parçaları tuttuğumuz listboxları çoklu seçim moduna
ayarlıyoruz.böylece birden fazla seçeneği seçebiliriz.
ListBox1.SelectionMode = SelectionMode.MultiSimple
ListBox2.SelectionMode = SelectionMode.MultiSimple
objexl.Visible = False
For i = 1 To 100
If wsheet.cells(i, 1).text <> "" Then
ListBox1.Items.Add(wsheet.cells(i, 1).text & wsheet.cells(i, 2).text)
End If
If wsheet.cells(i, 3).text <> "" Then
ListBox2.Items.Add(wsheet.cells(i, 3).text)
End If
Next
Dim adsheet(ListBox1.Items.Count) As Object
i = 0
For i = 0 To ListBox1.Items.Count - 1
adsheet(i) = objexl.Workbooks.Open("c:\" & ListBox1.Items.Item(i) & ".xls")
Next
objexl.Workbooks.Close()
End Sub
Ara butonuna bastığımızda ise başlangıçta Visible özelliklerini False yaptığımız Listbox3 ve Yeniden listeleme Butonlarını göstereceğiz. Yukarıda görünen nesnelerin ise Visible özelliklerini False yapacağız. Ara butonunun Click Metoduna aşağıdaki kodları yazalım.
Private Sub btnara_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles btnara.Click
Dim itmad As Object
Dim itmparca As Object
Dim i As Integer = 0
Dim j As Integer
ListBox3.Visible = True
ListBox1.Visible = False
ListBox2.Visible = False
Button2.Visible = False
Button3.Visible = True
ListBox3.Items.Insert(0, "Musteri adı" & Space(30 - Len("Musteri adı")))
For i = 0 To ListBox2.SelectedItems.Count - 1
ListBox3.Items.Item(0) = ListBox3.Items.Item(0) + _
ListBox2.SelectedItems.Item(i) + Space(30 - Len(ListBox2.Items.Item(i)))
Next
i = 1
j = 1
For Each itmad In ListBox1.SelectedItems
Dim wsheetad As Object
objexl.Workbooks.Open("c:\" + itmad + ".xls")
wsheetad = objexl.ActiveWorkbook.ActiveSheet
ListBox3.Items.Insert(i, itmad & Space(30 - Len(itmad)))
For Each itmparca In ListBox2.SelectedItems
For j = 1 To ListBox2.Items.Count
If wsheetad.cells(1, j).text = itmparca Then
ListBox3.Items.Item(i) = ListBox3.Items.Item(i) + _
wsheetad.cells(2, j).text + _
Space(30 - Len(wsheetad.cells(2, j).text))
End If
Next
Next
i = i + 1
Next
End Sub
“yenilisteleme” butonuna bastığımızda ise ile ekran tekrar gelecektir. Bu kodlar ise aşağıdadır
Private Sub btnylist_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles btnylist.Click
ListBox3.Items.Clear()
ListBox3.Visible = False
ListBox1.Visible = True
ListBox2.Visible = True
btnara.Visible = True
btnylist.Visible = False
End Sub
Bu yazımızda VB.Net ile Excelin kullanılması konusunu kısaca anlattım ve temel bir örnek verdim. Tabi daha da geliştirilebilir.
