1. Ana Sayfa
  2. Microsoft Office
  3. SQL Server Integration Services ile Excel Hücrelerini Okuma

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ı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

Yorum Yap

Yazar Hakkında

Şeyda Ocak, lisans eğitimini Sakarya Üniversitesi Bilgisayar Mühendisliği bölümünde, yüksek lisans eğitimini ise Sakarya Üniversitesi Bilgisayar ve Bilişim Mühendisliği bölümünde tamamlamıştır. Veri tabanı yazılımı ve raporlama dünyasına üniversitenin ilk yıllarında aldığı SQL Server veri tabanı eğitimleri ile başlayan Şeyda, sektörün önde gelen firmalarında İş Zekası alanında Microsoft teknolojileri üzerine çalışmış, şu anda Türkiye Finans Katılım Bankası’nda Veri Ambarı ve Yasal Raporlamalar Yönetici Yardımcısı olarak görev almaktadır.

Yorum Yap