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();
}