
C#'da Datagridview'i Excel'e Nasıl Aktaracağınızı Öğrenin
Bu eğitim, C#'ta IronXL kütüphanesini kullanarak bir Windows Forms Uygulamasında bir DataGridView kontrolünden Excel dosyasına veri nasıl aktarılır konusunda kapsamlı bir kılavuz sunar. Microsoft Excel işlevselliğini C# projelerine entegre etmek isteyen yeni başlayanlar için sorunsuz bir deneyim yaratmaya odaklanacağız.
How to Export DataGridView to Excel in C#
- Visual Studio'da bir C# Windows Forms projesi oluşturun.
- Excel Kütüphanesini NuGet Paket Yöneticisi kullanarak kurun.
- Windows Form UI'de bir DataGridView ve bir düğme oluşturun.
- DataGridView'a bir veri kaynağı ekleyin.
- Veri ihracat mantığını düğmenin tıklama olay işleyicisine uygulayın.
IronXL ile Başlangıç
IronXL, .NET Framework uygulamalarında Excel belgeleriyle çalışma sürecini basitleştiren güçlü bir kütüphanedir. Büyük Excel dosyalarını dışa aktarmanıza, karmaşık veri kaynaklarını yönetmenize ve Microsoft Excel Object Library'ye ihtiyaç duymadan .NET Excel dosya manipülasyonu için kapsamlı destek sağlar. Projemizi kuralım.
Projenizi Kurma
1. Yeni Bir Windows Forms Uygulaması Oluşturun
Visual Studio'yu açın ve yeni bir Windows Forms Uygulaması oluşturun. Bu, DataGridView verilerini bir Excel dosyasına aktarma işlevselliğini uygulayacağımız projemizin temeli olacaktır.

2. IronXL Kurulumu
IronXL projenize kolayca eklenebilir. Visual Studio'da, 'NuGet Paketlerini Yönet' seçeneğine gidin, IronXL arayın ve yükleyin. Bu işlem, DataGridView'u C#'ta Excel'e aktarmak için gerekli tüm bağımlılıkları yönetecektir.

3. Kullanıcı Arayüzünü Hazırlayın
Formunuza bir DataGridView kontrolü ekleyin. Bu kontrol, dışa aktarmayı düşündüğümüz verileri tutacaktır. Ek olarak, dışa aktarma sürecini tetiklemek için bir düğme ekleyin. 'Excel'e Aktar' veya benzer bir şey olarak etiketleyebilirsiniz.
Dışa Aktarma İşlevselliğinin Uygulanması
Bu bölümde, bir Windows Forms uygulamasında DataGridView'den Excel belgesine veri aktarmanızı sağlayan işlevselliği nasıl programlayacağınızı anlatacağız.
Uygulamayı İnşa Etmek
Öncelikle, formunuza bir DataGridView kontrolü eklemeniz gerekir. Bu kontrol, verilerinizin dışa aktarılmadan önce görüntülendiği birincil bileşendir. Bunu, toolbox'tan Visual Studio'da formunuza bir DataGridView sürükleyerek kolayca ekleyebilirsiniz. Excel dosyalarına DataGridView verilerini dışa aktarmak için bir düğme de ekleyebiliriz.

Bir sonraki adım, verileri DataGridView'a yüklemektir. Bu veri, bir DataTable veya DataSet gibi çeşitli kaynaklardan gelebilir. Başlıyorsanız, yeni bir DataSet veya DataTable programatik olarak oluşturmak ve nasıl çalıştığını görmek için örnek veri ile doldurmak isteyebilirsiniz. Alternatif olarak, verileri harici bir kaynaktan içe aktarabilirsiniz. Buradaki anahtar, veri kaynağınızı DataGridView'a bağlamaktır, bu da verilerinizi effektiviyetle ızgaraya bağlar. Verileriniz DataGridView'a bağlandığında, formunuzda ızgarada görüntülendiğini göreceksiniz.
private void BindDataToDataGridView()
{
// Create a new DataTable.
DataTable dataTable = new DataTable();
// Define columns for the DataTable.
dataTable.Columns.Add("Employee ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Department", typeof(string));
dataTable.Columns.Add("Joining Date", typeof(DateTime));
// Add sample data to the DataTable.
for (int i = 1; i <= 25; i++)
{
dataTable.Rows.Add(i, "Employee " + i, "Department " + (i % 5 + 1), DateTime.Now.AddDays(-i * 15));
}
// Bind the DataTable to the DataGridView.
dataGridView1.DataSource = dataTable;
}Private Sub BindDataToDataGridView()
' Create a new DataTable.
Dim dataTable As New DataTable()
' Define columns for the DataTable.
dataTable.Columns.Add("Employee ID", GetType(Integer))
dataTable.Columns.Add("Name", GetType(String))
dataTable.Columns.Add("Department", GetType(String))
dataTable.Columns.Add("Joining Date", GetType(DateTime))
' Add sample data to the DataTable.
For i As Integer = 1 To 25
dataTable.Rows.Add(i, "Employee " & i, "Department " & (i Mod 5 + 1), DateTime.Now.AddDays(-i * 15))
Next i
' Bind the DataTable to the DataGridView.
dataGridView1.DataSource = dataTable
End SubDüğmenin Tıklama Olayı İşleme
Kullanıcı ile olan birincil etkileşim noktamız Windows Form içindeki bir düğme olacaktır. Bu düğme, tıklanınca, dışa aktarma işlemini başlatır. Bu etkileşimi nasıl ayarlayacağınız:
- Windows Formunuzda, DataGridView verilerini dışa aktaracak özel bir düğmeniz olmalıdır.
- Bu düğmenin C# kodunuzda bir olay işleyici yöntemi vardır. Bu yöntem, kullanıcı düğmeyi tıkladığında tetiklenir.
private void btnExport_Click(object sender, EventArgs e)
{
// Code to export data will go here
}Private Sub btnExport_Click(ByVal sender As Object, ByVal e As EventArgs)
' Code to export data will go here
End SubDataGridView Verilerini Dışa Aktarma
DataGridView verilerini dışa aktarmak için, önce IronXL namespace'ini referans almanız gerekir:
using IronXL;Imports IronXLOlay işleyici içinde, ilk adım yeni bir workbook ve worksheet'i IronXL ile başlatmaktır. DataGridView'dan gelen verilerin aktarılacağı yerdir burası.
- Bir
WorkBooknesnesi, tüm Excel dosyasını temsil eder. - Çalışma kitabında bir
WorkSheet, Excel dosyasındaki bireysel bir sayfa veya sekme gibidir.
Burada bir workbook oluşturur ve ardından buna bir worksheet ekleriz. Worksheet 'ExportedData' olarak adlandırılmıştır ama uygulamanızın bağlamına uygun herhangi bir ad seçebilirsiniz.
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");Dim workbook As WorkBook = WorkBook.Create()
Dim worksheet As WorkSheet = workbook.CreateWorkSheet("ExportedData")Excel Sayfasını Doldurma
Bir sonraki adım, DataGridView'ınızın satırları ve sütunları arasında yineleme yaparak her hücrenin verilerini Excel çalışma sayfasındaki karşılık gelen hücreye kopyalamaktır.
- Dış döngü her satırı ilerlerken, iç döngü ilgili satır içindeki her sütunda dolaşır.
- DataGridView'daki her hücrenin değerini, Excel çalışma sayfasındaki karşılık gelen hücreye atarız. Bu,
i(satırlar için) vej(sütunlar için) dizinleri kullanılarak yapılır.
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
// Convert row and column index to Excel cell address format
string cellAddress = ConvertToCellAddress(i, j);
worksheet[cellAddress].Value = dataGridView1.Rows[i].Cells[j].Value.ToString();
}
}For i As Integer = 0 To dataGridView1.Rows.Count - 1
For j As Integer = 0 To dataGridView1.Columns.Count - 1
' Convert row and column index to Excel cell address format
Dim cellAddress As String = ConvertToCellAddress(i, j)
worksheet(cellAddress).Value = dataGridView1.Rows(i).Cells(j).Value.ToString()
Next j
Next iSatır ve sütun indekslerini bir Excel hücre adresine dönüştürmek için şu tür bir yardımcı yöntem kullanabilirsiniz:
private string ConvertToCellAddress(int row, int column)
{
// Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
// The following code converts a column index to this format.
string columnLabel = "";
while (column >= 0)
{
columnLabel = (char)('A' + column % 26) + columnLabel;
column = column / 26 - 1;
}
// Rows in Excel are labeled as 1, 2, 3, ..., n
// Adding 1 because Excel is 1-based and our loop is 0-based.
string rowLabel = (row + 1).ToString();
return columnLabel + rowLabel;
}Private Function ConvertToCellAddress(ByVal row As Integer, ByVal column As Integer) As String
' Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
' The following code converts a column index to this format.
Dim columnLabel As String = ""
Do While column >= 0
columnLabel = ChrW(AscW("A"c) + column Mod 26) & columnLabel
column = column \ 26 - 1
Loop
' Rows in Excel are labeled as 1, 2, 3, ..., n
' Adding 1 because Excel is 1-based and our loop is 0-based.
Dim rowLabel As String = (row + 1).ToString()
Return columnLabel & rowLabel
End FunctionExcel Dosyasını Kaydetme
Tüm veriler aktarıldığında, bir sonraki adım bu workbook'u Excel dosyası olarak kaydetmektir. Bu adım belirtilen yol üzerinde sisteminizde bir Excel dosyası oluşturur.
workbook.SaveAs("DataGridViewExport.xlsx");
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);workbook.SaveAs("DataGridViewExport.xlsx")
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)Hata Yönetimi
Herhangi bir veri ihracat sürecinde, istisnaları ele almak, uygulamanın kararlılığını sağlamak açısından önemlidir. İhracat mantığını try-catch bloku içine alarak, (dosya erişim izinleri, veri formatı sorunları gibi) ihracat sırasında meydana gelen her türlü sorunları yakalayarak ve nazik bir şekilde ele alırız.
try
{
// Export logic
}
catch (Exception ex)
{
MessageBox.Show("An exception occurred: " + ex.Message);
}Try
' Export logic
Catch ex As Exception
MessageBox.Show("An exception occurred: " & ex.Message)
End TryÇıktı
Programı çalıştırdığımızda, bu arayüz açılır:

Burada verilerin DataGridView içinde gösterildiğini görebilirsiniz. Şimdi, İhracat düğmesine tıklayın. Bu, DataGridView'dan Excel dosyasına veri aktaracaktır.

Burada, bir mesaj kutusunun göründüğünü ve verilerin Excel dosyasına aktarıldığını görebilirsiniz. İşte Excel dosyasının çıktısı:

Sonuç
Bu kılavuzu izleyerek, artık C# ve IronXL kullanarak DataGridView verilerini bir Excel dosyasına aktaran temel ama güçlü bir aracınız var. Bu işlevsellik, veri analizi, raporlama veya farklı formatlar arasında veri aktarımları gerektiren uygulamalar için önemlidir. Unutmayın, DataGridView kontrolü ve IronXL kütüphanesi'nin farklı özellikleriyle denemeler yapmak, daha özelleştirilmiş ve ileri düzeyde uygulamalara yol açabilir.
IronXL, özelliklerini keşfetmeniz için ücretsiz bir deneme sunar. Lisanslama $999 ile başlamaktadır, bu da profesyoneller ve .NET uygulamalarında Excel dosyalarını manipüle etme konusunda güvenilir ve etkili bir çözüm arayan organizasyonlar için değerli bir yatırım olarak öne çıkmaktadır.
Yolculuğunuz burada sona ermez. IronXL'in daha fazla özelliğini ve Windows Forms uygulamalarınızı geliştirmek için diğer yolları keşfetmeye devam edin. İyi kodlamalar!

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.
İlgili Makaleler



