Bu yazımızda daha önce C# ile Excel’ e Veri Aktarma konu başlıklı örneğimizden farklı olarak yine C# ile DataGridview kontrolünden Excel‘ e veri aktarımı işlemini yapan fakat belirlenen şartı sağlayan satır için hücre arkaplan rengini değiştiren bir örnek gerçekleştireceğiz. Ayrıca C# ile Excel hücresinin Yazı tipi (Font), Yazı Boyutu (FontSize), Yazı Rengi (FontColor), Sütun Genişliği gibi ayarların uygulanmasını sağlayacağız.
DataGridView için veri aktarma kısmı için önceden hazırladığım ve yazının sonunda linkini verdiğim örneği kullanacağım.
Formumuzu tasarlayarak projemize başlayalım.
Burada bizim için önemli kısım Aktar butonu olacak. Aktar Butonuna tıkladığımızda Sütun Başlıkları için Yazı Rengini,Yazı tipini,Yazı büyüklüğünü, Yazı Kalınlığını ve Sütun Genişliğini ayarlayacağız.
Başlık ayarlamaları Bittikten sonra belirlediğimiz bir şart için, o koşula uyan satırın arkaplan renginin Kırmızı olmasını sağlayacağız.
Örneğimizde Şehir sütununda “İstanbul” yazan kayıtlar için satır rengini değiştireceğiz.
Kodlarımızı yazıp projemizi çalıştırdığımızda Excel dosyamız aşağıdaki şekilde görüntülenecek.
Kodlarımızı yazmaya başlamadan önce gerekli referans eklemesini yapacağız. Bunun için Solution Explorer penceresinde projemize sağ tıklayarak Add – Reference tıklıyoruz.
Daha sonra karşımıza çıkan pencereden Microsoft Excel 16.0 Object Library seçerek projemize ekliyoruz.
Şimdi kodlarımıza geçiyoruz. İlk olarak gerekli referansımızı projemize ekleyelim.
1 2 3 | using Excel = Microsoft.Office.Interop.Excel; |
Şimdi Aktar butonu için kodlarımızı yazıyoruz.
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 | private void button2_Click(object sender, EventArgs e) { int sutun = 1; int satir = 1; Excel.Application ExcelApp = new Excel.Application(); ExcelApp.Workbooks.Add(); ExcelApp.Visible = true; //www.yazilimkodlama.com ExcelApp.Worksheets[1].Activate(); for (int j = 0; j < dataGridView1.Columns.Count; j++) { ExcelApp.Cells[satir, sutun + j].Value = dataGridView1.Columns[j].HeaderText; ExcelApp.Cells[satir, sutun + j].Font.Color = System.Drawing.Color.Blue; ExcelApp.Cells[satir, sutun + j].Font.Size = 12; ExcelApp.Cells[satir, sutun + j].ColumnWidth = 20; ExcelApp.Cells[satir, sutun + j].Font.Bold = true; ExcelApp.Cells[satir, sutun + j].Font.Name = "Arial Black"; } satir++;//www.yazilimkodlama.com for (int i = 0; i < dataGridView1.Rows.Count; i++) { for (int j = 0; j < dataGridView1.Columns.Count; j++) {//www.yazilimkodlama.com ExcelApp.Cells[satir + i, sutun + j].Value = dataGridView1[j, i].Value; if(dataGridView1[j, i].Value.ToString()=="İstanbul") { for(int k=1;k<=dataGridView1.Columns.Count;k++) {//www.yazilimkodlama.com ExcelApp.Cells[satir+i,k].Interior.Color = System.Drawing.Color.FromArgb(255, 0, 0); }//www.yazilimkodlama.com } } } } |
İşlem tamam. Artık projemizi çalıştırıp aktar butonuna tıklandığında yukarıda ekran görüntüsünü eklemiş olduğum şekilde Excel dosyamız açılacaktır.
Deneme yapmak için Datagridview’ e veri çekme işlemini buradaki örnek üzerinden alabilirsiniz.
Daha fazla örnek için Facebook Sayfamızı beğenin.
hocam Excel aktarımda 0ile başlayan rakamların basındaki sıfırları siliyor datagrid de nasıl görünüyor ise o sekilde aktarmasını istiyorum kod var elimde ama
private void button2_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel._Application uygulama = new Microsoft.Office.Interop.Excel.Application();
uygulama.Visible = true;
Microsoft.Office.Interop.Excel.Workbook kitap = uygulama.Workbooks.Add(System.Reflection.Missing.Value);
Microsoft.Office.Interop.Excel.Worksheet sayfa1 = (Microsoft.Office.Interop.Excel.Worksheet)kitap.Sheets[1];
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
Microsoft.Office.Interop.Excel.Range alan = (Microsoft.Office.Interop.Excel.Range)sayfa1.Cells[1, i + 1];
alan.Value2 = dataGridView1.Columns[i].HeaderText;
}
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
for (int j = 0; j < dataGridView1.Rows.Count; j++)
{
Microsoft.Office.Interop.Excel.Range alan = (Microsoft.Office.Interop.Excel.Range)sayfa1.Cells[j + 2, i + 1];
alan.Value2 = dataGridView1[i, j].Value;
}
}
}
bu kod ile aktardıgım zaman başındaki sıfırları siliyor veya (1,6E2222) gibi barkod kodlarınıda aynı sekilde aktarıyor kodumda yanlış olan nedir yardımcı olurmusunuz
Ahmet By. gönderdiğiniz link .xlsx dosyasından okuma yapmak için kullanışlı olabilir fakat benim ihtiyacım olan benim ismini belirlediğim xlsx dosyasına birden fazla kez yazmak. İki ayrı formdan aktar butonlarını kullanarak her iki form açık iken aynı excel dosyasına istediğim verileri aktarmak istiyorum. aktarma yaparken excel açılmamış olursa yapılabilir bir işlem olduğunu düşünüyorum.
İki farklı formun aynı anda ekranda ulaşılabilir olduğu bir durum düşünelim ve bu iki formdan da farklı bilgileri farklı hücrelere göndermek istiyorum yani excel’de tablo yaratacağım. Bunu sağlamak için benim belirlediğim bir isimde excel (.xslx) dosyasına verileri aktarsın ve diğer formdan veri göndermek istediğimde aynı excel dosyasına yazsın.
Aşağıda verdiğim linkteki örneği denermisin.
http://www.yazilimbilisim.net/c-sharp/c-ile-excel-dosyasi-acma-okuma/
Ben iki farklı formdan aktar butonu kullanarak aynı excele yazmak istiyorum fakat her iki form da kendine yeni bir excel açıyor. Bu konuyla ilgili acil çözüm.