IRONSOFTWAREHOME
IRONXL KULLANARAK

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

Curtis Chau
Curtis Chau
Updated: 28 Haziran 2026

C# DataGridView'i Biçimlendirme ile Excel'e Aktarma: Tam Kılavuz: Görsel 1 - C# DataGridView'i Biçimlendirme ile Excel'e Aktarma

DataGridView verilerini bir Excel dosyasına aktarmak, Windows Forms geliştirmede en yaygın görevlerden biridir. Tablo verileri gösteren iş uygulamaları oluştururken -- ister satış raporları, ister envanter kayıtları, isterse müşteri listeleri olsun -- kullanıcılar bir düğmeye tıklayıp paylaşabilecekleri veya daha fazla analiz edebilecekleri düzgün biçimlendirilmiş bir Excel dosyası bekler. Uygun bir şekilde, her son kullanıcının makinesinde bir Microsoft Excel kurulumuna bağlı olmadan ve bellek kaçağı ya da sessizce kırılan COM interop temizleme koduyla boğuşmadan yapmak zordur. Bu kılavuz, IronXL kullanarak C#'ta DataGridView 'i Excel'e aktarmanın tüm sürecini kapsar; proje kurulumundan gelişmiş hücre biçimlendirmesine kadar, sonuca üretime hazır kodla ulaşırsınız.

İlk Adım:
arrow pointer

DataGridView'i İhracat için Nasıl Ayarlarsınız?

DataGridView verilerini dışa aktarmanın geleneksel yaklaşımları Microsoft Interop'a dayanıyordu -- Add Reference açılır, COM sekmesine gidilir, Microsoft Excel Object Library seçilir ve hafıza sızıntılarından kaçınmak için Marshal.ReleaseComObject çağıran kırılgan kod yazılırdı. Bu model, uygulamanın çalıştığı her makinada Microsoft Excel yüklü olmasını gerektirir, büyük veri setleriyle yavaş çalışır ve Office lisanslarının eksik olduğu dağıtım ortamlarında sıklıkla COMException hataları üretir. Microsoft'un Office Otomasyonu rehberliği açıkça üçüncü taraf kütüphanelerini sunucu tarafı ve otomatik senaryolar için önerir.

IronXL tüm bu bağımlılıkları kaldırır. Microsoft Office veya herhangi bir COM kaydı olmadan .xlsx, .xls, .csv ve .ods dosyalarını okuyup yazan saf bir .NET kütüphanesidir. NuGet ile kurarsınız ve hemen kod yazmaya başlarsınız.

IronXL'in NuGet Üzerinden Kurulumu

.NET 10'u hedefleyerek Visual Studio'da yeni bir Windows Forms Uygulaması projesi oluşturarak başlayın. Form yüzeyine bir DataGridView kontrolü ve bir Button ekleyin. Butona btnExport adını verin ve etiket olarak 'Export to Excel' yazın. Ardından NuGet Paket Yöneticisi Konsolunu açın ve şunu çalıştırın:

PM > Install-Package IronXL.Excel

Gerekli ad alanlarını form dosyanızın üst kısmına ekleyin:

using IronXL;
using System.Data;

Bu iki ad alanı, Excel çalışma kitaplarını okuma ve yazma işlemleri için ihtiyaç duyduğunuz tüm IronXL türlerini ve DataTable nesneleri ile @@@--CODE-068--@@ tiplerini kapsar, bu türler ihracat hattına köprü kurar.

Örnek Verileri DataGridView Kontrolüne Nasıl Yükleriz?

Dışa aktarma mantığını oluşturmadan önce, DataGridView'inizi temsilci veri ile doldurun. Form1_Load olayı, veri kaynağı olarak DataTable bağlamanın doğru yeridir. Gerçek bir uygulamada bir veri tabanına sorgulama yapar veya bir hizmet çağırırdınız; burada kodlanmış bir DataTable, yapıyı net bir şekilde gösterir. Microsoft Docs üzerinden DataGridView kontrol genel bakışı, kontrolün veri kaynaklarını nasıl yönettiğine dair ek bağlam sağlar.

Bir DataTable'ı DataGridView'e Bağlama

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

Bu kod, olay işleyici imzası için üst düzey ifade stilini kullanır. DataTable, IronXL'in Excel çalışma kitabına yazarken koruyacağı dört tipli sütuna sahiptir -- tam sayı, dize, ondalık ve tam sayı. Yazılmış sütunlar önemlidir çünkü IronXL, sayısal sütunları metin yerine sayısal hücreler olarak yazar, bu da kullanıcıların verileri Excel'de yeniden biçimlendirmeden sıralayıp toplamalarını sağlar.

C# DataGridView'i Biçimlendirme ile Excel'e Aktarma: Tam Kılavuz: Görsel 2 - Form için UI

DataGridView, sütun başlık satırını DataTable sütun adlarından otomatik olarak oluşturur. İhracat yaptığınızda, bu başlık satırının Excel dosyasında korunmasını istersiniz, bu da ihracat kodunuzun başlıkları veri satırlarından ayrı olarak ele alması gerektiği anlamına gelir -- bir sonraki bölümde tam olarak bu ele alınmaktadır.

Üretim için, DataTable Entity Framework, Dapper, ADO.NET veya herhangi bir başka veri erişim katmanından gelsin, aynı desen uygulanır. DataGridView bağı, dışa aktarma kodundan ayrıdır, böylece veri kaynağını dışa aktarma mantığını değiştirmeden değiştirebilirsiniz.

DataGridView Verilerini Excel Dosyasına Nasıl İhari Ederiz?

Temel ihraç mantığı, butona tıklama işleyicisinin içinde çalışır. IronXL, sütundan hücreye eşlemeyi otomatik olarak yöneten LoadFromDataTable yöntemini WorkSheet üzerinden sağlar. En temiz yaklaşım, DataGridView'den bir DataTable çıkarıp doğrudan geçirmektir. .xlsx formatının temelini oluşturan Open XML SDK, Microsoft tarafından belgelenmiştir ve IronXL gibi saf .NET çözümlerinin, programatik üretim için Interop'tan neden daha iyi performans gösterdiğini doğrular.

Butona Tıklama İhraç İşleyicisi

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

C# DataGridView'i Biçimlendirme ile Excel'e Aktarma: Tam Kılavuz: Görsel 3 - Oluşturulan Excel dosyası

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 bayrak alır -- bu hücreler başlık hücreleriniz olur. Çalışma kitabı, kodu kullanıcı hesapları arasında taşınabilir hale getiren, sert kodlanmış bir yol yerine Environment.SpecialFolder.Desktop kullanılarak kullanıcının Masaüstüne kaydedilir.

null denetimi (?? DBNull.Value) prevents a NullReferenceException bir hücrede değer olmadığında oluşur. Gerçek dünya verilerinde, isteğe bağlı alanların boş olabileceği senaryolar için önemlidir. IronXL, DBNull'ı, dizgi 'DBNull' yerine boş bir hücre olarak yazar, böylece çıktı temiz kalır.

Excel dosyalarından verileri bir DataGridView'e geri okuma ile ilgili daha fazla ayrıntı için, ters işlemi ve çok sayfalı çalışma kitapları için Excel'i DataSet'e dönüştürme işlemi nasıl yapılır gibi konuları kapsayan IronXL DataTable belgelerine bakın.

İhraç Edilen Excel Dosyasına Profesyonel Biçimlendirme Nasıl Uygulanır?

Excel dosyasındaki duyarlı veriler işlevseldir, ancak profesyonel biçimlendirilmiş çıktı -- kalın başlıklar, içeriğe uygun sütun genişlikleri, alternatif satır arka plan renkleri -- kullanıcının güvendiği bir araç ile hemen yeniden biçimlendirilip el ile yola koyuldukları bir araç arasında fark yaratır. IronXL, yazı tipleri, renkler, kenarlıklar, sayı formatları ve hizalama dahil olmak üzere zengin bir hücre stil API sağlar. IronXL'nin yazdığı altyapı formatını tanımlayan OOXML tablo stili spesifikasyonu, çıktının uyumlu herhangi bir uygulamada doğru şekilde açılmasına güven verir.

Başlık Stilleri ve Alternatif Satır Renkleri Uygulama

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

C# DataGridView'i Biçimlendirme ile Excel'e Aktarma: Tam Kılavuz: Görsel 4 - Oluşturulan biçimlendirilmiş Excel dosyasının çıktısı

Biçimlendirme kodu birkaç tekniği uygular. Başlık satırı, mavi bir arka plana (#4472C4) ve beyaz metne, 12 punto kalın yazı tipine ve ortalanmış hizalamaya sahiptir -- bu, standart bir iş elektronik tablo stilidir. Veri satırları, geniş tablolarda kullanıcıların yerini kaybetmeden okuyabilmesini 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, bu nedenle değerler, elektronik tabloda dolar işaretleri ve iki ondalık basamakla görüntülenir, ancak alttaki sayısal veriler değişmez. AutoSizeColumn her sütunu en uzun değerine uygun hale getirir, böylece içerik kesilmez.

Bu şablonu hücre kenarlık stilinde, koşullu biçimlendirme, ve veri doğrulama kurallarıyla daha da genişletebilirsiniz. Kurumsal bir şablonla eşleşmesi gereken raporlar için, sayfa düzenini ve baskı alanını ayarlayarak dosyanın dağıtılmadan önce baskı için hazır hale gelmesini sağlayabilirsiniz.

Büyük Veri Kümeleri ve Performans Ayarlama Nasıl Ele Alınır?

Bir DataGridView, binlerce satıra bağlandığında, hücre hücre yineleme dikkat çekici şekilde yavaş olur. İki optimizasyon, performansı önemli ölçüde artırır. İlk olarak, hücre başına SetCellValue çağrıları yerine LoadFromDataTable kullanın. İkincisi, veri kaynağınız bir DataTable ise, DataGridView satırları aracılığıyla değerleri çıkarmak yerine, doğrudan IronXL'e aktarın:

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

10.000'den fazla satırlı veri setleri için, dışa aktarma işlemini arka plan iş parçacığında çalıştırmak UI'yi duyarlı tutar. Dışa aktarma mantığını Task.Run içine sarın ve Invoke kullanarak MessageBox.Show çağrısını UI iş parçacığına aktarın. IronXL, ayrı WorkBook örnekleri üzerinde yazma işlemleri için iş parçacığı güvenlidir, bu nedenle gerekirse birden çok dışa aktarma işini eşzamanlı olarak çalıştırabilirsiniz.

Ek performans kaynakları:

DataGridView İhracı İçin IronXL ve Microsoft Interop Nasıl Karşılaştırılır?

Birçok geliştirici, Office ile birlikte geldiği için Microsoft Excel Interop ile başlamaktadır ve ek paketler gerektirmez. Ancak, Interop'un üretim ortamlarında hızla ortaya çıkan gerçek dünya maliyetleri vardır. Aşağıdaki tablo önemli farkları özetler:

DataGridView İhracı için IronXL ve Microsoft Excel Interop
YetenekIronXLMicrosoft Interop
Microsoft Excel'in kurulumu gerekliHayırEvet
Sunucu/bulut ortamlarında çalışırEvetHayır (Microsoft tarafından desteklenmeyen)
COM nesne temizliği gereklidirHayırEvet (Marshal.ReleaseComObject)
Büyük veri kümeleriyle performansHızlı (saf .NET)Yavaş (COM arayıcı genel maliyeti)
Yükleme yöntemiNuGetCOM başvurusu / Office kurulumu
Destekli .NET sürümleri.NET 4.6.2 -- .NET 10Yalnızca .NET Framework (sınırlı)
XLSX, CSV, ODS desteğiEvetYalnızca Microsoft Excel üzerinden XLSX/XLS

Microsoft'un kendi belgeleri, stabilite ve lisans endişelerini öne sürerek, sunucularda veya servis hesaplarında Office Interop kullanımına karşı uyarır. IronXL, Azure App Service, Windows Service hostları, Docker kapları ve Excel gibi bir masaüstü uygulamanın çalışmasının mümkün olmadığı diğer başsız ortamlarda doğru şekilde çalışır.

Interop'u zaten kullanan ve geçiş yapmak isteyen ekipler için, IronXL'in API'si, çoğu WorkBook ve WorkSheet işlemlerinin doğrudan çevrileceği kadar yakındır. IronXL geçiş rehberi yaygın Interop kalıplarını ve bunların IronXL eşdeğerlerini kapsar.

Sonraki Adımlarınız Neler?

DataGridView 'i IronXL kullanarak Excel'e aktarmak, yalnızca bir NuGet paketi kurulumunu ve birkaç satır kodu gerektirir; bu, kırılgan COM interop yaklaşımını temiz, bakım yapılabilir ve herhangi bir dağıtım ortamında çalışan bir çözümle değiştirir. Burada ele alınan teknikler -- temel ihraç, biçimlendirilmiş çıktı, büyük veri kümesi optimizasyonları ve karşılaştırma tablosu -- bu özelliği üretime hazır bir Windows Forms uygulamasına sevk etmek için gereken her şeyi verir.

Buradan, bu ilgili yetenekleri keşfedin:

Ücretsiz IronXL denemesine başlayarak projenizde tam özellik setini test edin veya IronXL lisans seçeneklerini inceleyin; üretim dağıtımına hazır olduğunuzda.

Curtis Chau
Teknik Yazar

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.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez