C# DataGridView'den Excel'e Dışa Aktarma: Formatlama ile Tam Kılavuz | IronXL

Verileri DataGridView Excel dosyasına aktarmak, Windows Forms geliştirmede en yaygın görevlerden biridir. İş uygulamaları oluştururken, kullanıcılar -- ister satış raporları, ister envanter kayıtları, ister müşteri listeleri, tablo biçimindeki verileri gösteren bir uygulama -- bir düğmeye tıklayarak paylaşabilecekleri veya daha fazla analiz edebilecekleri düzgün biçimlendirilmiş bir Excel dosyası almayı beklerler. Bu işi temiz bir şekilde, her kullanıcının makinesine Microsoft Excel yüklemeye bağımlı olmadan ve bellek sızıntısı yapan veya sessizce hata veren bir COM interop temizleme kodu ile boğuşmadan yapmak büyük bir zorluktur. Bu kılavuz, proje kurulumundan gelişmiş hücre biçimlendirmeye kadar IronXL kullanarak C# dilinde DataGridView Excel'e aktarmanın tam sürecini ele alır, böylece üretime hazır kod elde edersiniz.
DataGridView Export için Bir Windows Forms Projesi Nasıl Kurulur?
Geleneksel yaklaşımlar, verileri DataGridView aktarmak için Microsoft Interop'a dayanıyordu -- Add Reference'i açardınız, COM sekmesine giderdiniz, Microsoft Excel Object Library'i seçerdiniz ve bellek sızıntılarını önlemek için Marshal.ReleaseComObject çağrısı yapan kırılgan bir kod yazardınız. Bu model, uygulamanın çalıştığı her makinede Microsoft Excel yüklü olmasını gerektirir, büyük veri kümeleriyle yavaş çalışır ve genellikle Office lisanslarının bulunmadığı dağıtım ortamlarında COMException hataları üretir. Microsoft'un Office Otomasyonu hakkındaki kılavuzu, sunucu tarafı ve otomatik senaryolar için üçüncü taraf kütüphaneler önerir.
IronXL bu bağımlılıkların hepsini ortadan kaldırır. .NET kitaplığı, Microsoft Office veya herhangi bir COM kaydı olmadan .xlsx, .xls, .csv ve .ods dosyalarını okur ve yazar. NuGet üzerinden yüklersiniz ve hemen kod yazmaya başlarsınız.
NuGet ile IronXL Yükleme
.NET 10 hedefleyen Visual Studio'da yeni bir Windows Forms Uygulama projesi oluşturarak başlayın. Bir DataGridView kontrolü ve forma bir Button ekleyin. Butona btnExport adını verin ve "Excel'e Aktar" etiketi koyun. Sonra NuGet Paketi Yonetici Konsolunu açin ve şu komutu calistirin:
Install-Package IronXl.Excel
Install-Package IronXl.Excel
Gerekli ad alanlarini form dosyanizin en ustune ekleyin:
using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
Bu iki ad alanı, Excel çalışma kitaplarını okuma ve yazma için gereken tüm IronXL türlerini ve veri aktarım hattınıza köprü kuran DataTable nesneleriyle çalışmak için standart System.Data türlerini kapsar.
Numune Verileri DataGridView Kontrolune Nasıl Yuklersiniz?
Dışa aktarma mantığını oluşturmadan önce DataGridView temsilci veriyle doldurun. Form1_Load olayı, veri kaynağı olarak DataTable'ı bağlamak için doğru yerdir. Gerçek bir uygulamada bir veritabanını sorgular veya bir hizmet çağırırdınız; burada sabit kodlu bir DataTable, yapıyı açıkça gösterir. Microsoft Dokumlarinda DataGridView kontrolu genel bakışı kontrolun veri kaynaklarini nasıl yonettigi konusunda ek baglam sunar.
DataGridView'e DataTable Baglama
void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("ProductID", typeof(int));
dt.Columns.Add("ProductName", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Columns.Add("Stock", typeof(int));
dt.Rows.Add(1, "Laptop", 999.99m, 50);
dt.Rows.Add(2, "Mouse", 29.99m, 200);
dt.Rows.Add(3, "Keyboard", 79.99m, 150);
dt.Rows.Add(4, "Monitor", 349.99m, 75);
dt.Rows.Add(5, "Webcam", 89.99m, 120);
dataGridView1.DataSource = dt;
}
void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("ProductID", typeof(int));
dt.Columns.Add("ProductName", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Columns.Add("Stock", typeof(int));
dt.Rows.Add(1, "Laptop", 999.99m, 50);
dt.Rows.Add(2, "Mouse", 29.99m, 200);
dt.Rows.Add(3, "Keyboard", 79.99m, 150);
dt.Rows.Add(4, "Monitor", 349.99m, 75);
dt.Rows.Add(5, "Webcam", 89.99m, 120);
dataGridView1.DataSource = dt;
}
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As New DataTable()
dt.Columns.Add("ProductID", GetType(Integer))
dt.Columns.Add("ProductName", GetType(String))
dt.Columns.Add("Price", GetType(Decimal))
dt.Columns.Add("Stock", GetType(Integer))
dt.Rows.Add(1, "Laptop", 999.99D, 50)
dt.Rows.Add(2, "Mouse", 29.99D, 200)
dt.Rows.Add(3, "Keyboard", 79.99D, 150)
dt.Rows.Add(4, "Monitor", 349.99D, 75)
dt.Rows.Add(5, "Webcam", 89.99D, 120)
dataGridView1.DataSource = dt
End Sub
Bu kod, olay isleyici imzası icin ust seviye aciklama stilini kullanir. DataTable dört tipte sütun içerir -- tamsayı, dize, ondalık ve tamsayı -- ki IronXL, Excel çalışma kitabına yazarken bunları korur. Typed kolonlar onemlidir cunku IronXL sayisal kolonlari metin yerine sayi hucreleri olarak yazar, bu da kullanicilarin Excel'de format değiştirmeden degerleri siralamalarina ve toplamalasina olanak tanir.

DataGridView, sütun adlarından otomatik olarak bir sütun başlığı satırı oluşturur. Ihrac ettiginizde, bu baslik satirinin Excel dosyasinda korunmasini istersiniz, bu da ihracat kodunuzun basliklarla veri satirlarini ayri ayri ele alması gerektiği anlamina gelir -- bir sonraki bölüm tam olarak bunu kapsar.
Üretim kullanımı için, DataTable Entity Framework, Dapper, ADO.NET veya herhangi bir veri erişim katmanından gelse de aynı model geçerlidir. DataGridView bağlaması, dışa aktarma kodundan ayrılmıştır, bu nedenle veri kaynağını dışa aktarma mantığına dokunmadan değiştirebilirsiniz.
DataGridView Verilerini Excel Dosyasına Nasıl Ihrac Edebilirsiniz?
Ana ihrac mantigi dugme tiklama isleyicisinin icinde calisir. IronXL, sütun-c-v-k-s hücre eşlemesini otomatik olarak işleyen bir LoadFromDataTable yöntemi sağlar. En temiz yaklaşım, DataTable'yi DataGridView'den ayırmak ve doğrudan iletmektir. Open XML SDK, .xlsx formatının temelini oluşturur ve Microsoft tarafından belgelenmiştir. Temiz .NET çözümleri olan IronXL'in, programatik jenerasyon için Interop'a göre neden daha üstün olduğunu doğrular.
Buton Tiklama Ihrac Isleyici
void btnExport_Click(object sender, EventArgs e)
{
try
{
DataTable dt = new DataTable();
foreach (DataGridViewColumn column in dataGridView1.Columns)
dt.Columns.Add(column.HeaderText);
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.IsNewRow) continue;
DataRow dataRow = dt.NewRow();
for (int i = 0; i < dataGridView1.Columns.Count; i++)
dataRow[i] = row.Cells[i].Value ?? DBNull.Value;
dt.Rows.Add(dataRow);
}
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.DefaultWorkSheet;
worksheet.Name = "Product Data";
worksheet.LoadFromDataTable(dt, true);
string outputPath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
"DataGridViewExport.xlsx"
);
workbook.SaveAs(outputPath);
MessageBox.Show($"Exported successfully to:\n{outputPath}", "Export Complete",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show($"Export failed: {ex.Message}", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
void btnExport_Click(object sender, EventArgs e)
{
try
{
DataTable dt = new DataTable();
foreach (DataGridViewColumn column in dataGridView1.Columns)
dt.Columns.Add(column.HeaderText);
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.IsNewRow) continue;
DataRow dataRow = dt.NewRow();
for (int i = 0; i < dataGridView1.Columns.Count; i++)
dataRow[i] = row.Cells[i].Value ?? DBNull.Value;
dt.Rows.Add(dataRow);
}
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.DefaultWorkSheet;
worksheet.Name = "Product Data";
worksheet.LoadFromDataTable(dt, true);
string outputPath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
"DataGridViewExport.xlsx"
);
workbook.SaveAs(outputPath);
MessageBox.Show($"Exported successfully to:\n{outputPath}", "Export Complete",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show($"Export failed: {ex.Message}", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Imports System
Imports System.Data
Imports System.IO
Imports System.Windows.Forms
Public Sub btnExport_Click(sender As Object, e As EventArgs)
Try
Dim dt As New DataTable()
For Each column As DataGridViewColumn In dataGridView1.Columns
dt.Columns.Add(column.HeaderText)
Next
For Each row As DataGridViewRow In dataGridView1.Rows
If row.IsNewRow Then Continue For
Dim dataRow As DataRow = dt.NewRow()
For i As Integer = 0 To dataGridView1.Columns.Count - 1
dataRow(i) = If(row.Cells(i).Value, DBNull.Value)
Next
dt.Rows.Add(dataRow)
Next
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
worksheet.Name = "Product Data"
worksheet.LoadFromDataTable(dt, True)
Dim outputPath As String = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
"DataGridViewExport.xlsx"
)
workbook.SaveAs(outputPath)
MessageBox.Show($"Exported successfully to:{Environment.NewLine}{outputPath}", "Export Complete",
MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show($"Export failed: {ex.Message}", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub

LoadFromDataTable(dt, true) çağrısı, DataTable'ü ve IronXL'e sütun adlarını ilk Excel satırı olarak yazmasını söyleyen bir boolean bayrağını alır -- bunlar başlık hücreleriniz olur. Çalışma kitabı, kullanıcı hesabı üzerinden kodun taşınabilir olmasını sağlamak için sabit kodlanmış bir yol yerine Environment.SpecialFolder.Desktop kullanarak kullanıcının Masaüstüne kaydedilir.
null kontrol (?? Bir hücrede değer olmadığında NullReferenceException @@--CODE-310@@DBNull.Value). Bu, isteğe bağlı alanlarin bos olabilecegi gerçek dunya verileri icin onemlidir. IronXL,DBNull`'i "DBNull" dizesi yerine boş bir hücre olarak yazar, böylece çıktı temiz kalır.
Excel dosyalarından verileri geri DataGridView içine okumak hakkında daha fazla ayrıntı için, çok sayfalı çalışma kitapları için IronXL DataTable belgelerini ve Excel'i DataSet'e dönüştürme işlemini kapsar.
Ihrac Edilen Excel Dosyasina Profesyonel Biçimlendirme Nasıl Uygulanır?
Excel dosyasındaki düz veriler işlevseldir, ancak profesyonel olarak biçimlendirilmiş çıktılar -- kalın başlıklar, içeriğe uygun sütun genişlikleri, ardışık satır arka plan renkleri -- kullanıcıların güven duyduğu bir araç ile hemen el ile yeniden biçimlendirilen bir araç arasında fark yaratır. IronXL, fontlar, renkler, kenarlıklar, sayi formatlari ve hizalama kaplamalari iceren zengin bir hucre stili API'si sunar. IronXL'un yazdigi, uyumlu her uygulamada dogru acilmasina guven duydugunuz ooutput formatini tanimlayan OOXML (;calisma kitaplari stilleri icin özellik belgelerini okuyun.
Baslik Stillerini ve Alternatif Satir Renklerini Uygulamak
void ExportWithFormatting(object sender, EventArgs e)
{
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.DefaultWorkSheet;
worksheet.Name = "Formatted Export";
string[] headers = { "ID", "Product Name", "Price", "Stock" };
// Write and style header row
for (int col = 0; col < headers.Length; col++)
{
char colLetter = (char)('A' + col);
string cellAddress = $"{colLetter}1";
worksheet.SetCellValue(0, col, headers[col]);
worksheet[cellAddress].Style.Font.Bold = true;
worksheet[cellAddress].Style.Font.Height = 12;
worksheet[cellAddress].Style.SetBackgroundColor("#4472C4");
worksheet[cellAddress].Style.Font.Color = "#FFFFFF";
worksheet[cellAddress].Style.HorizontalAlignment =
IronXl.Styles.HorizontalAlignment.Center;
}
// Write data rows with alternating background colors
int rowIndex = 1;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.IsNewRow) continue;
for (int col = 0; col < dataGridView1.Columns.Count; col++)
{
worksheet.SetCellValue(rowIndex, col,
row.Cells[col].Value?.ToString() ?? string.Empty);
}
if (rowIndex % 2 == 0)
{
string rangeAddress = $"A{rowIndex + 1}:D{rowIndex + 1}";
worksheet[rangeAddress].Style.SetBackgroundColor("#D6DCE5");
}
rowIndex++;
}
// Format the Price column as currency
worksheet["C2:C100"].Style.Format = "$#,##0.00";
// Auto-fit column widths
worksheet.AutoSizeColumn(0);
worksheet.AutoSizeColumn(1);
worksheet.AutoSizeColumn(2);
worksheet.AutoSizeColumn(3);
string outputPath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
"FormattedExport.xlsx"
);
workbook.SaveAs(outputPath);
MessageBox.Show("Formatted export complete.", "Done",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
void ExportWithFormatting(object sender, EventArgs e)
{
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.DefaultWorkSheet;
worksheet.Name = "Formatted Export";
string[] headers = { "ID", "Product Name", "Price", "Stock" };
// Write and style header row
for (int col = 0; col < headers.Length; col++)
{
char colLetter = (char)('A' + col);
string cellAddress = $"{colLetter}1";
worksheet.SetCellValue(0, col, headers[col]);
worksheet[cellAddress].Style.Font.Bold = true;
worksheet[cellAddress].Style.Font.Height = 12;
worksheet[cellAddress].Style.SetBackgroundColor("#4472C4");
worksheet[cellAddress].Style.Font.Color = "#FFFFFF";
worksheet[cellAddress].Style.HorizontalAlignment =
IronXl.Styles.HorizontalAlignment.Center;
}
// Write data rows with alternating background colors
int rowIndex = 1;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.IsNewRow) continue;
for (int col = 0; col < dataGridView1.Columns.Count; col++)
{
worksheet.SetCellValue(rowIndex, col,
row.Cells[col].Value?.ToString() ?? string.Empty);
}
if (rowIndex % 2 == 0)
{
string rangeAddress = $"A{rowIndex + 1}:D{rowIndex + 1}";
worksheet[rangeAddress].Style.SetBackgroundColor("#D6DCE5");
}
rowIndex++;
}
// Format the Price column as currency
worksheet["C2:C100"].Style.Format = "$#,##0.00";
// Auto-fit column widths
worksheet.AutoSizeColumn(0);
worksheet.AutoSizeColumn(1);
worksheet.AutoSizeColumn(2);
worksheet.AutoSizeColumn(3);
string outputPath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
"FormattedExport.xlsx"
);
workbook.SaveAs(outputPath);
MessageBox.Show("Formatted export complete.", "Done",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Imports System
Imports System.IO
Imports System.Windows.Forms
Imports IronXL
Sub ExportWithFormatting(sender As Object, e As EventArgs)
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
worksheet.Name = "Formatted Export"
Dim headers As String() = {"ID", "Product Name", "Price", "Stock"}
' Write and style header row
For col As Integer = 0 To headers.Length - 1
Dim colLetter As Char = ChrW(AscW("A"c) + col)
Dim cellAddress As String = $"{colLetter}1"
worksheet.SetCellValue(0, col, headers(col))
worksheet(cellAddress).Style.Font.Bold = True
worksheet(cellAddress).Style.Font.Height = 12
worksheet(cellAddress).Style.SetBackgroundColor("#4472C4")
worksheet(cellAddress).Style.Font.Color = "#FFFFFF"
worksheet(cellAddress).Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center
Next
' Write data rows with alternating background colors
Dim rowIndex As Integer = 1
For Each row As DataGridViewRow In dataGridView1.Rows
If row.IsNewRow Then Continue For
For col As Integer = 0 To dataGridView1.Columns.Count - 1
worksheet.SetCellValue(rowIndex, col, If(row.Cells(col).Value?.ToString(), String.Empty))
Next
If rowIndex Mod 2 = 0 Then
Dim rangeAddress As String = $"A{rowIndex + 1}:D{rowIndex + 1}"
worksheet(rangeAddress).Style.SetBackgroundColor("#D6DCE5")
End If
rowIndex += 1
Next
' Format the Price column as currency
worksheet("C2:C100").Style.Format = "$#,##0.00"
' Auto-fit column widths
worksheet.AutoSizeColumn(0)
worksheet.AutoSizeColumn(1)
worksheet.AutoSizeColumn(2)
worksheet.AutoSizeColumn(3)
Dim outputPath As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "FormattedExport.xlsx")
workbook.SaveAs(outputPath)
MessageBox.Show("Formatted export complete.", "Done", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub

Biçimlendirme kodu birkaç teknik uygular. Başlık satırı, beyaz yazı, 12 punto kalın yazı karakteri ve ortalanmış hizalama ile mavi bir arka plan (#4472C4) alır -- standart bir iş elektronik tablosu stili. Veri satırları, geniş tabloları okurken kullanıcıların konumlarını kaybetmeden okumalarını kolaylaştırmak için her çift satırda beyaz ve açık gri (#D6DCE5) arasında değişir. Fiyat sütunu, Excel'in yerleşik para birimi biçimini ($#,##0.00) kullanır, böylece elektronik tabloda dolar işaretleriyle ve iki ondalık basamakla görüntülenir, ancak temel sayısal veriler değişmez. AutoSizeColumn her sütunu en uzun değerine uyacak şekilde sığdırır, böylece hiçbir içerik kesilmez.
Bu deseni hucre kenarlik stili, kosullu biçimlendirme ve veri doğrulama kuralları ile daha da genişletebilirsiniz. Kurumsal sablona uyması gereken raporlar icin, sayfa düzenini ve baskı alanını ayarlayarak ihraç edilen dosyanın ayarlama olmadan baskıya hazır olmasini sağlayabilirsiniz.
Buyuk Veri Kümeleri ve Performans Ayarlamaları Nasıl Ele Alinir?
Binlerce satır bağlı olan bir DataGridView olduğunda, hücre hücre üzerinde yineleme yapmak belirgin şekilde yavaşlar. Iki optimizasyon performansi önemli ölçüde artırır. Önce, hücre başına SetCellValue çağrıları yerine LoadFromDataTable kullanın. İkinci olarak, veri kaynağınız bir DataTable ise, verileri DataGridView satırları üzerinden çıkarmak yerine doğrudan IronXL'e iletin:
void ExportLargeDataset(DataTable sourceTable)
{
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Direct DataTable load -- fastest path for large data
worksheet.LoadFromDataTable(sourceTable, true);
// Apply header styling after load
int colCount = sourceTable.Columns.Count;
for (int col = 0; col < colCount; col++)
{
char colLetter = (char)('A' + col);
worksheet[$"{colLetter}1"].Style.Font.Bold = true;
worksheet[$"{colLetter}1"].Style.SetBackgroundColor("#4472C4");
worksheet[$"{colLetter}1"].Style.Font.Color = "#FFFFFF";
}
workbook.SaveAs(Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
"LargeExport.xlsx"
));
}
void ExportLargeDataset(DataTable sourceTable)
{
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Direct DataTable load -- fastest path for large data
worksheet.LoadFromDataTable(sourceTable, true);
// Apply header styling after load
int colCount = sourceTable.Columns.Count;
for (int col = 0; col < colCount; col++)
{
char colLetter = (char)('A' + col);
worksheet[$"{colLetter}1"].Style.Font.Bold = true;
worksheet[$"{colLetter}1"].Style.SetBackgroundColor("#4472C4");
worksheet[$"{colLetter}1"].Style.Font.Color = "#FFFFFF";
}
workbook.SaveAs(Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
"LargeExport.xlsx"
));
}
Option Strict On
Sub ExportLargeDataset(sourceTable As DataTable)
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
' Direct DataTable load -- fastest path for large data
worksheet.LoadFromDataTable(sourceTable, True)
' Apply header styling after load
Dim colCount As Integer = sourceTable.Columns.Count
For col As Integer = 0 To colCount - 1
Dim colLetter As Char = ChrW(AscW("A"c) + col)
worksheet($"{colLetter}1").Style.Font.Bold = True
worksheet($"{colLetter}1").Style.SetBackgroundColor("#4472C4")
worksheet($"{colLetter}1").Style.Font.Color = "#FFFFFF"
Next
workbook.SaveAs(Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
"LargeExport.xlsx"
))
End Sub
10.000'den fazla satır içeren veri kümeleri için, dışa aktarıma bir arka plan dizisinde çalışmak, kullanıcı arayüzünü yanıt verir durumda tutar. Dışa aktarma mantığını Task.Run içine sarın ve Invoke kullanarak MessageBox.Show çağrısını kullanıcı arayüzü dizisine yeniden iletin. IronXL, ayrı WorkBook örneklerinde yazma işlemleri için iş parçacığı güvenliğindedir, bu nedenle gerekirse birden çok dışa aktarmayı eşzamanlı olarak çalıştırabilirsiniz.
Ek performans kaynakları:
IronXL ile Microsoft Interop Atiliyor Mu? Nasıl Kiyaslanir?
Birçok geliştirici, Office ile birlikte geldiğinden ve ek paket gerektirmediğinden Microsoft Excel Interop ile başlar. Ancak, gerçek dunyada uretil yukselleri ortama hizla cikar. Aşağıdaki tablo temel farkları özetler:
| Yetkinlik | IronXL | Microsoft Interop |
|---|---|---|
| Microsoft Excel kurulumu gerektirir | Hayır | Evet |
| Sunucu / bulut ortamlarda calisir | Evet | Hayir (Microsoft tarafindan desteklenmez) |
| COM nesnesi temizligi gerekli | Hayır | Evet (Marshal.ReleaseComObject) |
| Buyuk veri kumelemleri ile performans | Hizli (saf .NET) | Yavaş (COM araci masrafi) |
| Kurulum yöntemi | NuGet | COM referans / Ofis kurulumu |
| Desteklenen .NET surumleri | .NET 4.6.2 -- .NET 10 | Sadece .NET Framework (sinirli) |
| XLSX, CSV, ODS destegi | Evet | Yalnizca Excel uzerinden XLSX/XLS |
Microsoft'un kendi belgeleri, Office Interop'un sunucularda veya hizmet hesaplarında kullanılmasına karsi sittis uzerinden stabilite ve lisans sorunları nedeniyle uyariyor. IronXL, Excel gibi masaustu uygulamalarının calistirilabilirliği olmayan her baslik ortamlarda -- Azure Uygulama Hizmeti, Windows Hizmetleri barındırıcıları, Docker containerları ve diğer -- dogru calisir.
Interop'u zaten kullanan ve geçiş yapmak isteyen ekipler için, IronXL'in API'si çoğu WorkBook ve WorkSheet işlemlerini doğrudan çeviren kadar yakındır. IronXL göç kılavuzu, yaygin Interop kalıplarını ve bunların IronXL karşılıklarını kaplar.
Sıradaki Adımlarınız Neler?
Verileri DataGridView IronXL kullanarak Excel'e aktarmak, yalnızca bir NuGet paketi yüklemesi ve birkaç kod satırı gerektirir, kırılgan COM interop yaklaşımını temiz, bakımı kolay bir çözüme dönüştürür ve her dağıtım ortamında çalışır. Burada kapsanan yöntemler -- temel çikarma, biçimlendirilmiş çıktılar, büyük veri kümeleri optimizasyonu ve karşılaştırmalı tablo -- bu özelliğin Windows Forms üretim uygulamasında nakledilmesi icin gereken her şeyi size sunar.
Bu noktadan itibaren, iliskili yetenekleri inceleyin:
C# ile sıfırdan Excel dosyaları oluşturun -- veri kaynagi olmadan calisma kitabı programli oluşturma Excel dosyalarını DataTable'ye okuyun -- uygulamaniza yeniden Excel verilerini import etmenin tersi işlemi Koşullu biçimlendirme uygulayın -- degerlerine gore otomatik olarak hucreleri vurgulama Excel'de grafik verileri belirleyin -- ihraç edilen calisma kitapçıklarına grafik ekleme Excel dosyalarını şifre korumaya alın -- dagıtımdan once raporları guvenli hale getirin
- CSV formatına aktarma -- alıcıların düz dosya formatına ihtiyaç duyması halinde
.xlsx
Ücretsiz IronXL denemenizi başlatın projenizde tam özellik setini test etmek icin ya da IronXL lisanslama seçeneklerini inceledikten sonra üretim yayınına hazır olduğunuzda.
Sıkça Sorulan Sorular
C# dilinde DataGridView verilerini Excel'e nasıl aktarırım?
NuGet ile IronXL'yi yükleyin, DataGridView'ınızdan bir DataTable çıkarın, bir WorkBook ve WorkSheet oluşturun, worksheet.LoadFromDataTable(dt, true) çağırın, ardından workbook.SaveAs ile kaydedin.
DataGridView Excel'e aktarırken hangi formatlama seçenekleri mevcut?
IronXL kalın fontlar, arka plan renkleri, font renkleri, yatay hizalama, numara formatları (para birimi gibi), otomatik boyut sütunları, kenarlık stilleri ve koşullu formatlama destekler.
DataGridView verilerini dışa aktarmak için Microsoft Excel'in yüklenmesine gerek var mı?
Hayır. IronXL, Microsoft Office veya makinede herhangi bir COM kaydı gerektirmeden Excel dosyaları üreten saf bir .NET kütüphanesidir.
DataGridView'ı Excel'e aktarırken başlıkları stilize edebilir miyim?
Evet. Başlık satırını yazdıktan sonra, her başlık hücresine adres tarafından erişin ve Style.Font.Bold, Style.SetBackgroundColor ve Style.Font.Color özelliklerini ayarlayın.
DataGridView'daki satırları Excel'e aktarırken dönüşümlü satır renklerini nasıl uygularım?
DataGridView satırlarını iter ederken satır indeksini takip edin ve çift satırlar için worksheet[rangeAddress].Style.SetBackgroundColor ile seçilen hex renk kullanarak bir aralık stili uygulayın.
DataGridView'ı Excel'e aktarırken büyük veri setleriyle nasıl başa çıkılır?
Temel DataTable'ı doğrudan worksheet.LoadFromDataTable'a iletin, hücre hücre iter etmek yerine. Çok büyük setler için, ihracatı Task.Run kullanarak bir arka plan iş parçacığında çalıştırın.
IronXL, DataGridView ihracatında Microsoft Excel Interop ile nasıl karşılaştırılır?
IronXL, Microsoft Excel gerektirmez, sunucu ve bulut ortamlarında çalışır, herhangi bir COM temizleme koduna ihtiyaç duymaz ve büyük veri setlerinde önemli ölçüde daha hızlı çalışır.




