SQL Server Integration Services ile Excel Hücrelerini Okuma

ETL ile uğraşan herkes bir şekilde SSIS ile Excel’den veri okumuştur. Herhâlde en rahat ve kolay şekilde yapılan okuma türü de budur. Peki ya verimiz Excel’de düz bir liste şeklinde değil de farklı hücrelerde dağınık bir şekilde bulunuyorsa o zaman ne yapmamız gerekiyor? Hep birlikte bunu inceleyeceğiz şimdi.

Elimizdeki örnek Excel modeli aşağıdaki şekildeki gibi olsun.


Resim-1

Gördüğümüz gibi Excel’deki veriler satır formatında değil kolon formatında bulunuyor. Ad bilgisini okuyabilmek için B3, pozisyon bilgisini okuyabilmek için H5 hücrelerini okumamız gerekiyor. Normal SSIS aktarımlarını bu örneğimiz gibi durumlarda kullanamıyoruz.

Şimdi bu Excel’deki hücreleri tek tek okuyarak SQL Server’daki bir tabloya SSIS yardımıyla yazmaya başlayalım. Bu işlem için SSIS deki Script Component taskını kullanacağız.


Resim-2

Script tipi olarak source seçiyoruz ve çıktı olarak vereceğimiz tüm alanlarımızı tek tek tanımlıyoruz. Tüm çıktı alanları için doğru data tiplerinde tanımlama yapmamız çok önemli.


Resim-3

Tanımlamalardan sonra Edit Script diyerek gereken kodu yazmaya başlıyoruz. Ben burada yazacağım kod olarak Vb.Net tercih ettim, C# ile de yazılabilir.

Excel’den okuma yapacağımız için öncelikle Excel referansını ekliyoruz.


Resim-4

Kodun en üstündeki Imports alanına Imports Microsoft.Office.Interop.Excel tanımlamasını yapıyor ve CreateNewOutputRows() içine aşağıdaki kodu yazıyoruz.

Public Overrides Sub CreateNewOutputRows()

 

Dim oExcel As Object = CreateObject(“Excel.Application”)

Dim FileName As String

FileName = “C:\Users\socak\Desktop\test.xls”

 

Dim oBook As Object = oExcel.Workbooks.Open(FileName)

Dim oSheet As Object = oBook.Worksheets(1)

 

Output0Buffer.AddRow()

 

Output0Buffer.Ad = oSheet.Range(“B3”).Value

Output0Buffer.Soyad = oSheet.Range(“B4”).Value

Output0Buffer.İl = oSheet.Range(“B5”).Value

Output0Buffer.İlçe = oSheet.Range(“E4”).Value

Output0Buffer.Firma = oSheet.Range(“E5”).Value

Output0Buffer.Pozisyon = oSheet.Range(“H5”).Value

 

End Sub

Paketimizi çalıştırdıktan sonra SQL Server’daki tablomuza kayıtların geldiğini görebiliyoruz.


Resim-5

Excel’deki her bir hücrenin tek tek kodun içinde yazılıyor olması biraz can sıkıcı olabilir ama hücrelerdeki değerler sabit kabul edilirse oldukça kolay bir yöntem olarak kullanabiliriz.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

Yazı gezinmesi

Mobil sürümden çık