Bu yazıda C# ile Exceli nasıl biçimlendireceğimizi inceleyeceğiz.
C# ile Exceli programlamak için Microsoft Excel 12.0 Object Kütüphanesini kullanmıştık. Bu kütüphane Excel kitabı oluşturma, kayıt ekleme, silme, güncelleme gibi birçok özelliği vermektedir. Bu işlemlerin dışında C# ile Excele erişim sağlayıp hücreleri biçimlendirmek de mümkün.
Microsoft Excel 12.0 Object Kütüphanesini projemize dahil edip kodlarımızı yazmaya başlıyoruz.
Aşağıdaki kodları windows form yada wpf üzerinde bir butona bağlayarak çalıştırdığımızda belirttiğimiz bölümdeki excel dosyası ile işlem yapacaktır.
Parça parça verilen örnekleri yazının sonundaki genel örnekle birleştirerek test edebiliriniz.
C# Excel Hücreleri Birleştirme
1 2 3 4 5 |
/***HÜCRE BİÇİMLENDİRME ÖRNEĞİ***/ xlSayfa.get_Range("b2", "e3").Merge(false); /*****************/ |
C# Excel Sayı Biçimlendirme(Binde ayıraçlı olarak biçimlendirme)
1 2 3 4 5 6 7 |
/***HÜCRE BİÇİMLENDİRME ÖRNEĞİ***/ range = xlSayfa.get_Range("a1", "a5"); //a1-a5 arasındaki hucreleri seçiyoruz. range.NumberFormat = "#,###,###"; //seçilen binde ayıraç formatını uyguluyoruz. xlSayfa.Cells[1, 1] = "1234567890"; //ilk hücreye sayısal değeri giriyoruz. /*****************/ |
C# Excel Para Birimi Biçimlendirme
1 2 3 4 5 6 7 8 9 |
/***HÜCRE BİÇİMLENDİRME ÖRNEĞİ***/ range = xlSayfa.get_Range("a1", "a5"); //a1-a5 arasındaki hucreleri seçiyoruz. range.NumberFormat = " ₺ #,###,###.00"; //döviz kuru biçimlendirmesi xlSayfa.Cells[1, 1] = "1234567890"; //ilk hücreye sayısal değeri giriyoruz. /*****************/ |
C# Excel Tarih Biçimlendirme
1 2 3 4 5 6 7 |
/***HÜCRE BİÇİMLENDİRME ÖRNEĞİ***/ range = xlSayfa.get_Range("a1", "a5"); //a1-a5 arasındaki hucreleri seçiyoruz. range.NumberFormat = "dd/mm/yyyy"; //tarih biçimelendirmesi d(gün) m(ay) y(yıl) xlSayfa.Cells[1, 1] = "10/6/2000"; //ilk hücreye sayısal değeri giriyoruz. /*****************/ |
C# Excel Tarih Saat Biçimlendirme
1 2 3 4 5 6 7 |
/***HÜCRE BİÇİMLENDİRME ÖRNEĞİ***/ range = xlSayfa.get_Range("a1", "a5"); //a1-a5 arasındaki hucreleri seçiyoruz. range.NumberFormat = "dd/mm/yyyy hh:mm:ss"; //tarih biçimelendirmesi d(gün) m(ay) y(yıl) h(saat) m(dakika) s(saniye) xlSayfa.Cells[1, 1] = "10/6/2000 14:45"; //ilk hücreye sayısal değeri giriyoruz. /*****************/ |
C# Excel Seçilen Hücreyi Kalın Font ile Biçimlendirme
1 2 3 4 5 6 7 |
/***HÜCRE BİÇİMLENDİRME ÖRNEĞİ***/ range = xlSayfa.get_Range("a1", "a5"); //a1-a5 arasındaki hucreleri seçiyoruz. range.EntireRow.Font.Bold = true; xlSayfa.Cells[1, 1] = "C# Excel Kalın Yazma"; //ilk hücreye sayısal değeri giriyoruz. /*****************/ |
C# Excel Seçilen Hücreyi Kalın ve İtalik Yapma
1 2 3 4 5 6 7 8 |
/***HÜCRE BİÇİMLENDİRME ÖRNEĞİ***/ range = xlSayfa.get_Range("a1", "a5"); //a1-a5 arasındaki hucreleri seçiyoruz. range.EntireRow.Font.Italic = true; range.EntireRow.Font.Bold = true; xlSayfa.Cells[1, 1] = "C# Excel Kalın Yazma"; //ilk hücreye sayısal değeri giriyoruz. /*****************/ |
C# Excel Çerçeve Oluşturma -C# Excel Hücre Kenarlıkları Oluşturma
1 2 3 4 5 6 7 8 |
/***HÜCRE BİÇİMLENDİRME ÖRNEĞİ***/ range = xlSayfa.get_Range("a1", "a5"); //a1-a5 arasındaki hucreleri seçiyoruz. Excel.Borders cerceve = range.Borders;// aralıktaki hücrelerin çerçevelerini için gerekli ensneyi oluşturduk cerceve.LineStyle = Excel.XlLineStyle.xlContinuous; //seçilen çerçevelere berittiğimiz stili uyguladık cerceve.Weight = 2d;//çereve kalınlığı /*****************/ |
C# Excel Hücre Renklendirme – C# Excel Hücre Arkaplanı Renklendirme
1 2 3 4 5 6 7 |
/***HÜCRE BİÇİMLENDİRME ÖRNEĞİ***/ range = xlSayfa.get_Range("a1", "a5"); //a1-a5 arasındaki hucreleri seçiyoruz. range.Interior.Color = Excel.XlRgbColor.rgbAqua; xlSayfa.Cells[1, 2] = "BU HÜCRE RENKLENDİRİLDİ"; /*****************/ |
C# Excel Font Büyütme ve C# Excel Font Rengini Değiştirme
1 2 3 4 5 6 7 8 9 |
/***HÜCRE BİÇİMLENDİRME ÖRNEĞİ***/ range = xlSayfa.get_Range("a1", "a5"); //a1-a5 arasındaki hucreleri seçiyoruz. range.Interior.Color = Excel.XlRgbColor.rgbAqua; range.Font.Size = 20; range.Font.Color= Excel.XlRgbColor.rgbPink; xlSayfa.Cells[1, 2] = "BU HÜCRE RENKLENDİRİLDİ"; /*****************/ |
[divider]
Yukarıda açıklanan C# ile Excel Biçimlendirme Komutlarını aşağıdaki programda çalıştırmak için yukarıdaki kodları aşağıdaki kod ile birleştirebilirsiniz.
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 34 35 36 37 38 39 40 41 42 |
Excel.Application xlUygulama;//uygulama değişkeni tanımlandı Excel.Workbook xlKitap;//kitap değişkeni tanımlandı Excel.Worksheet xlSayfa;//sayfa değişkeni tanımlandı Excel.Range range;//aralık değişkeni tanımlandı xlUygulama = new Excel.Application(); xlKitap = xlUygulama.Workbooks.Open("d:\\bel2.xls");//belirtilen adresteki excel dosyasını aç. xlSayfa = (Excel.Worksheet)xlKitap.Worksheets.get_Item(1);//ilk sayfayı aç /***HÜCRE BİÇİMLENDİRME ÖRNEĞİ***/ //Yukarıda parça parça açıkladığım kod örneklerini yapıştırarak uygulamayı çalıştırabilirsiniz. /*****************/ xlUygulama.Visible = true; // açılan excel dosyasını ekranda görmek için Visible özelliği true yapılır. xlKitap.Save(); //güncellemeleri kaydediyoruz. xlKitap.Close(true, null, null); //açılan excel kitabını kapatıyoruz. xlUygulama.Quit(); //excel programını kapatıyoruz. /*Ram üzeründen de excelin bağlantısını kaldırıyoruz.*/ try { System.Runtime.InteropServices.Marshal.ReleaseComObject(xlUygulama); xlUygulama = null; } catch (Exception ex) { xlUygulama = null; MessageBox.Show("Hata " + ex.ToString()); } finally { GC.Collect(); } |
C# programlamada Visual studio da yazıyorum. Excel dosyasındaki veriyi dosyayı seçerek sistemime yüklüyorum.Dosyasındaki sütunların birinde fatura sıra no diye bir alan var.Fatura sıra no en az 13 haneden oluşuyor örneğin 2016000000123 yada daha uzun olabiliyor. Bunu excel dosyasındaki ilgili hücreye yazınca bu şekilde değil örneğin 2,0000+E0000 vb. şekilde oluyor. Böyle bir veriyi hürce biçimlendirmesi yapmadan hatasız olarak nasıl yükleyebiliriz, kod lazım, hücrenin içini alsın.
Makro yazmayı biliyorsan.
Şu şekilde kullanabilirsin
ActiveSheet.Columns(“A”).NumberFormat = “#,###”
C# ile hiç denemedim ilk fırsatta c# ile deneyip kodu burada paylaşırım.