C# Excel'e Veriyi Düzenleyerek Göndermek

mcalimlier

Picopat
Katılım
18 Kasım 2022
Mesajlar
103
Daha fazla  
Cinsiyet
Erkek
Merhabalar. Çok uzun zamandır üzerinde durduğum bir konu idi. Sayısız kaynak inceledim. Kimisi sadece aktarmayı göstermiş, kimisi çok kısıtlı bir biçimlendirme ile aktarmış, kimisi de aktardığı verinin dışındaki satır ve sütunlarıda düzenleme getirmiş. Bu kodlama ise sadece aktarılan verileri düzenliyor. Yapılan biçimlendirme ise oldukça detaylıdır.

using System.Net;
using System.Reflection;
using System.Text.RegularExpressions;
using Microsoft.Office.Interop.Excel;
using excel = Microsoft.Office.Interop.Excel;
using Range = Microsoft.Office.Interop.Excel.Range;

(COM: Microsoft.Office.Interop.Excel)
(COM: FAXCOMEXLib)
(Paket: mysql.data\8.0.32\)
(Paket: system.data.sqlclient\4.8.5\)

private void button2_Click(object sender, EventArgs e)
{
excel.Application app = new excel.Application();
app.Visible = true;
Workbook kitap = app.Workbooks.Add(System.Reflection.Missing.Value);
Worksheet sayfa = (Worksheet)kitap.Sheets[1];

//DataGridView deki kolon başlıklarının yazdırılması
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
Range alan = (Range)sayfa.Cells[1, 1];
alan.Cells[1, i + 1] = dataGridView1.Columns.HeaderText;

}

for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
for (int j = 0; j < dataGridView1.Rows.Count; j++)
{
Range alan2 = (Range)sayfa.Cells[j + 1, i + 1];
alan2.Cells[2, 1] = dataGridView1[i, j].Value;
}
}

Microsoft.Office.Interop.Excel.Range excelRange =sayfa.UsedRange;//Excel'e aktarılan yazının toplam alanı
int rowCount = excelRange.Rows.Count;//Excel'e aktarılan yazının toplan satır sayısı
int colCount = excelRange.Columns.Count;//Excel'e aktarılan yazının toplan sütun sayısı

excel.Range rng1 = sayfa.get_Range("A1", "L1");//Başlıklar ile ilgili görsel düzenleme
rng1.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White);
rng1.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.DarkBlue);
rng1.Font.Bold = true;
rng1.HorizontalAlignment = excel.XlHAlign.xlHAlignCenter;
rng1.VerticalAlignment = excel.XlVAlign.xlVAlignCenter;
rng1.Borders.LineStyle = excel.XlBorderWeight.xlHairline;

excel.Range rng2 = sayfa.get_Range("A2", "L"+rowCount.ToString());//Başlık altında kalan kısımların düzenlemesi
rng2.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White);
rng2.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.CadetBlue);
rng2.HorizontalAlignment = excel.XlHAlign.xlHAlignLeft;
rng2.VerticalAlignment = excel.XlVAlign.xlVAlignCenter;
rng2.Borders.LineStyle = excel.XlBorderWeight.xlHairline;

excel.Range rng3 = sayfa.get_Range("J2", "L" + rowCount.ToString());//Para birimi ile ilgili sütunun düzenlemesi
rng3.NumberFormat = "##,### ₺";

excel.Range rng4 = sayfa.get_Range("A1","L"+rowCount.ToString());//Çerçeve çizilecek alanın belirlenmesi
excel.Borders cerceve = rng4.Borders;// Çerçeve için gerekli nesnenin oluşturulması
cerceve.LineStyle = excel.XlLineStyle.xlContinuous; //seçilen çerçevelere berittiğimiz stili uyguladık
cerceve.Weight = 2d;//çereve kalınlığını belirledil

excel.Range rng5 = sayfa.get_Range("A1", "L" + colCount.ToString());//Kullanılan alandaki yazıları genişliğine göre sığdırma
rng5.EntireColumn.AutoFit();
}
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…