C# uygulamarında Excel’de tablo şeklinde veri çekme işlemine ihtiyaç olunabiliyor. Bu verileri DataTable türünde çekeceğiz. DataTable içinde istediğimiz gibi dönerek tek bir hücre verisine, bir satıra ve ya tüm tabloya ulaşılabilir.
DataTable geri dönderen fonksiyon:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
public static System.Data.DataTable Import(String path) { ApplicationClass app = new ApplicationClass(); Workbook workBook = app.Workbooks.Open(path, 0, true, 4, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); Worksheet workSheet = (Worksheet)workBook.ActiveSheet; int index = 0; object rowIndex = 2; System.Data.DataTable dt = new System.Data.DataTable(); dt.Columns.Add("BirinciKolon"); dt.Columns.Add("IkinciKolon"); dt.Columns.Add("UcuncuKolon"); dt.Columns.Add("DorduncuKolon"); System.Data.DataRow row; while (((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 1]).Value2 != null) { rowIndex = 2 + index; row = dt.NewRow(); row[0] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 1]).Value2); row[1] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 2]).Value2); row[2] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 3]).Value2); row[3] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 4]).Value2); index++; dt.Rows.Add(row); } app.Workbooks.Close(); return dt; } |
Metotu çağırma şekli:
1 |
System.Data.DataTable dt = Import("C:/Users/ft/Desktop/asd.xlsx"); |
Excel Kütüphanesini Projeye Ekleme:
Visual Studioda View > Other Windows > Package Manager Console seçiyoruz. Açılan pencereye:
1 |
PM> Install-Package Microsoft.Office.Interop.Excel |
Yükleme işlemi bittikten sonra yapacağımız son bir işlem kaldı. ApplicationClass sınıfının çalışması için:
Solution Explorer dan Referanslara sağ tıklıyoruz ve New Solution Explorer View seçiyoruz. Açılan pencerede yeni eklediğimiz Microsoft.Office.Interop.Excel referansına sağ tıklayıp Properties açıyoruz ve Embed Interop Types özelliğiniz False yapıyoruz.
Artık excel dosyalarından DataTable çekebiliriz.
Birleştirilmiş hücre varsa excelde datagride düzgün çekilemiyor bilgiler bunu nasıl çözeriz
Birleştirilen hücreler DataTable oluşmasına engel olacak şekildeyse veri düzgün çekilemez. Tüm Excel dikkate alınarak DataTable oluşumuna engel olmayacak şekilde tablo birleştirmesi yapılmalı.
DataTable cok eski bir yontem cok daha hizli ve kolay bunu yaabilecegimiz nuget paketleri var artik. Emegeinize saglik kolay gelsin.