IRONSOFTWAREHOME
IRONXL KULLANARAK

IronXL Kullanarak Formatlamalı C# Dilinde GridView'den Excel'e Nasıl Aktarılır

Curtis Chau
Curtis Chau
Updated: 28 Haziran 2026

Renkleri, yazı tiplerini, değişken satır arka planlarını ve sınırları koruyarak GridView verilerini Excel'e aktarmak, neredeyse her veri odaklı ASP.NET veya Windows Forms uygulamasında karşılaşılan bir gerekliliktir. Geleneksel yaklaşım -- denetimi HTML olarak oluşturmak için HtmlTextWriter ve StringWriter kullanılmak -- Excel'de biçim uyarıları taşıyan dosyalar üretir ve kullanıcılar için sessizce başarısız olur. IronXL, Microsoft Office bağımlılığı olmadan C# içinde tamamen yerel XLSX dosyaları üreterek bunu çözer ve her hücre stilinde tam kontrol sağlar.

Bir .NET Projesine Kütüphane Nasıl Yüklenir?

Herhangi bir aktarım kodu yazmadan önce IronXL'i NuGet'ten yükleyin. Paket Yöneticisi Konsolu'nu açın ve çalıştırın:

PM > Install-Package IronXL.Excel

IronXL, .NET 8, .NET 9 ve .NET 10'un yanı sıra .NET Framework 4.6.2 ve sonraki sürümleri destekler. Kurulumdan sonra, Excel işlemleri gerçekleştiren herhangi bir dosyaya aşağıdaki using yönergelerini ekleyin:

using IronXL;
using IronXL.Styles;

Ekstra bir çalışma zamanı veya Office interop gerekmez. Kütüphane, Microsoft Excel, LibreOffice Calc ve Google Sheets'te düzgün açılan yerel XLSX ikili dosyalar yazar.

Windows Forms DataGridView'i Excel'e Hücre Biçimlendirmesiyle Nasıl Aktarırsınız?

Windows Forms uygulamaları web tabanlı GridView yerine DataGridView denetimini kullanır. İhraç şablonu her iki durumda da aynıdır: satırlardan ve hücrelerden değerler çıkarılır, bir IronXL çalışma kitabı oluşturulur, stiller uygulanır, ardından sonuç kaydedilir veya akış olarak iletilir.

En güvenilir yaklaşım, görsel satırları yinelemekten kaçınmak için denetimin DataSource özelliğini bir DataTable ile dökmektir, bu satırlar filtrelenmiş veya sayfalara bölünmüş olabilir:

using IronXL;
using IronXL.Styles;
using System;
using System.Data;
using System.IO;
using System.Windows.Forms;

DataTable dt = (DataTable)dataGridView1.DataSource;

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workBook.DefaultWorkSheet;

// Header row -- bold, blue background, white text
for (int col = 0; col < dt.Columns.Count; col++)
{
    sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
    var cell = sheet.GetCellAt(0, col);
    cell.Style.Font.Bold = true;
    cell.Style.SetBackgroundColor("#4472C4");
    cell.Style.Font.Color = "#FFFFFF";
    cell.Style.BottomBorder.Type = BorderType.Thin;
}

// Data rows -- alternating row color
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        string value = dt.Rows[row][col]?.ToString() ?? string.Empty;
        sheet.SetCellValue(row + 1, col, value);

        var cell = sheet.GetCellAt(row + 1, col);
        cell.Style.SetBackgroundColor(row % 2 == 0 ? "#D6DCE5" : "#FFFFFF");
        cell.Style.BottomBorder.Type = BorderType.Thin;
    }
}

// Save via dialog
using var saveDialog = new SaveFileDialog
{
    Filter = "Excel Files|*.xlsx",
    FileName = "GridViewExport.xlsx"
};

if (saveDialog.ShowDialog() == DialogResult.OK)
{
    workBook.SaveAs(saveDialog.FileName);
    MessageBox.Show("Export successful.", "Export",
        MessageBoxButtons.OK, MessageBoxIcon.Information);
}

WorkBook.Create, XLSX formatında yeni bir bellek içi çalışma kitabı başlatır. DefaultWorkSheet, ilk sayfayı döndürür ve kaydetmeden önce Name özelliği aracılığıyla yeniden adlandırabilirsiniz. SetCellValue, string, tam sayı, double ve DateTime değerlerini kabul eder -- IronXL doğru hücre tipini otomatik olarak seçer.

Değişen satır rengi deseni -- row % 2 == 0 #D6DCE5'yi seçer, aksi halde #FFFFFF -- Excel'e yerleşik olan bantlanmış satır tablo stilini yansıtır. Dizayn sisteminize uygun herhangi bir altı karakterli hex rengini yerine koyabilirsiniz.

Çıktı Resimleri

IronXL Kullanarak Biçimlendirme ile GridView'i Excel'e Aktarın: Görsel 1 - GridView Çıkışı

IronXL Kullanarak Biçimlendirme ile GridView'i Excel'e Aktarın: Görsel 2 - Excel Çıkışı

IronXL Kullanarak Biçimlendirme ile GridView'i Excel'e Aktarın: Görsel 3 - Mesaj Çıkışı

ASP.NET GridView'i Excel'e Nasıl Aktarır ve Dosyayı Tarayıcıya Nasıl Yayınlarsınız?

Web uygulamaları farklı bir teslimat mekanizması gerektirir. Dosya sistemine yazmak yerine, çalışma kitabını bir MemoryStream içine serileştirin ve doğru başlıklarla HTTP yanıtına yazın, böylece tarayıcı bunu bir dosya indirimi olarak değerlendirir.

Sayfalara bölünmüş GridView için önemli ön hazırlık adımı: sayfalamayı devre dışı bırakın (AllowPaging = false) ve her kaydın -- yalnızca mevcut sayfanın değil -- yakalanabilmesi için veri kaynağını yeniden bağlayın.

using IronXL;
using IronXL.Styles;
using System;
using System.Data;
using System.IO;
using System.Web.UI;

// Disable paging so all rows are captured
GridView1.AllowPaging = false;
GridView1.DataBind();

DataTable dt = (DataTable)GridView1.DataSource;

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workBook.DefaultWorkSheet;

// Header row
for (int col = 0; col < dt.Columns.Count; col++)
{
    sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
    var cell = sheet.GetCellAt(0, col);
    cell.Style.Font.Bold = true;
    cell.Style.SetBackgroundColor("#2E75B6");
    cell.Style.Font.Color = "#FFFFFF";
    cell.Style.HorizontalAlignment = HorizontalAlignment.Center;
    cell.Style.BottomBorder.Type = BorderType.Medium;
}

// Data rows
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        sheet.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);
        var cell = sheet.GetCellAt(row + 1, col);
        cell.Style.SetBackgroundColor(row % 2 == 0 ? "#DEEAF1" : "#FFFFFF");
        cell.Style.BottomBorder.Type = BorderType.Thin;
        cell.Style.LeftBorder.Type = BorderType.Thin;
        cell.Style.RightBorder.Type = BorderType.Thin;
    }
}

// Stream to browser
byte[] fileBytes = workBook.ToByteArray();
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=GridViewExport.xlsx");
Response.BinaryWrite(fileBytes);
Response.End();

Response.AddHeader ile content-disposition: attachment modern tarayıcıların tümünde bir dosya indirme diyalogu zorlar. MIME türü application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, XLSX dosyaları için kayıtlı türdür ve tarayıcının ikili içeriği satır içi göstermeye çalışmasını önler.

ASP.NET Core uygulamaları için bir denetleyici işleminde Response.BinaryWrite yerine File(fileBytes, contentType, fileName) kullanın -- çalışma kitabı oluşturma mantığı aynıdır.

Hücre Değerlerine Göre Koşullu Biçimlendirme Nasıl Uygulanır?

Koşullu biçimlendirme, belirli kriterleri karşılayan hücreleri vurgular -- örneğin, gecikmiş tarihleri kırmızıyla işaretleme veya eşik altında kalan değerleri turuncuyla işaretleme. IronXL, çalışma kitabı yapımı sırasında hücre düzeyinde koşullu biçimlendirme uygular:

// Assume "DueDate" is column index 3 and "Amount" is column index 4
DateTime today = DateTime.Today;

for (int row = 0; row < dt.Rows.Count; row++)
{
    // Highlight past-due dates
    if (dt.Columns.Contains("DueDate") && dt.Rows[row]["DueDate"] != DBNull.Value)
    {
        DateTime dueDate = Convert.ToDateTime(dt.Rows[row]["DueDate"]);
        var dueDateCell = sheet.GetCellAt(row + 1, 3);
        if (dueDate < today)
        {
            dueDateCell.Style.SetBackgroundColor("#FF0000");
            dueDateCell.Style.Font.Color = "#FFFFFF";
            dueDateCell.Style.Font.Bold = true;
        }
    }

    // Highlight amounts below threshold
    if (dt.Columns.Contains("Amount") && dt.Rows[row]["Amount"] != DBNull.Value)
    {
        decimal amount = Convert.ToDecimal(dt.Rows[row]["Amount"]);
        var amountCell = sheet.GetCellAt(row + 1, 4);
        if (amount < 100m)
        {
            amountCell.Style.SetBackgroundColor("#FFC000");
        }
    }
}

Bu desen, raporlama gereksinimlerinizin gerektirdiği kadar çok koşullu kontrol ekleme kapasitesine sahiptir. IronXL hücresel bazda çalıştığından, koşullu biçimlendirmeyi baz satır stilinin ardından koşullu stili uygulayarak değişken satır rengi mantığı ile karıştırabilirsiniz.

Sütun Genişliklerini Nasıl Ayarlarsınız ve Başlık Satırını Nasıl Dondurursunuz?

Profesyonelce biçimlendirilmiş bir Excel aktarma, uygun sütun genişliklerini ve kullanıcıların büyük veri kümelerini kaydırırken sütun adlarının görünür kalmasını sağlayan donmuş bir başlık satırını içerir.

IronXL, sütun genişliğini WorkSheet sütun erişici aracılığıyla ve başlık dondurmayı FreezeRows yöntemi aracılığıyla ortaya koyar:

// Auto-size columns 0 through the last column index
for (int col = 0; col < dt.Columns.Count; col++)
{
    // Set column width in character units (1 unit ≈ one default character width)
    sheet.SetColumnWidth(col, 20);
}

// Freeze the first row (index 0) so the header stays visible while scrolling
sheet.FreezeRows(1);

// Optionally set row height for the header (in points)
sheet.SetRowHeight(0, 20);

Üretim kullanımı için, her sütunda maksimum karakter sayısına dayalı genişlik hesaplamayı düşünün. DataTable sütun değerlerini yineleyin, dizi uzunluğunu ölçün ve seçilen yazı tipi boyutuna uygun bir karakter genişliği faktörü ile çarpın.

Dizayn sisteminizden bağımsız, satır bantlaması mantığından ayrı olarak daha ince bir stillendirme yaklaşımı için C# kullanarak Excel hücrelerine arka plan rengini uygulayabilirsiniz.

GridView Kontrolü Olmadan DataTable'ı Excel'e Nasıl Aktarırsınız?

Birçok .NET uygulaması, hizmet çağrıları veya veritabanı sorguları aracılığıyla veri doldurur ve bunu bir DataTable içinde tutar, ancak hiçbir zaman bir kullanıcı arayüzü denetimine bağlamaz. Bir DataTable'i hiç bir GridView başlatmadan doğrudan Excel'e aktarabilirsiniz.

Bu, arka plan işleri, planlanmış raporlar ve sunucuda Excel dosyaları üretmesi gereken API uç noktaları için en verimli yoldur:

using IronXL;
using IronXL.Styles;
using System.Data;

public static byte[] DataTableToExcelBytes(DataTable dt, string sheetName = "Report")
{
    WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet sheet = workBook.CreateWorkSheet(sheetName);

    // Header
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
        var cell = sheet.GetCellAt(0, col);
        cell.Style.Font.Bold = true;
        cell.Style.SetBackgroundColor("#4472C4");
        cell.Style.Font.Color = "#FFFFFF";
    }

    // Data
    for (int row = 0; row < dt.Rows.Count; row++)
    {
        for (int col = 0; col < dt.Columns.Count; col++)
        {
            sheet.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);
        }
    }

    return workBook.ToByteArray();
}

Bu yöntem, diske yazabileceğiniz, bir API uç noktasından akış yapabileceğiniz, bir e-postaya ekleyebileceğiniz veya bellekte önbelleğe alabileceğiniz bir byte[] döndürür. İlgili teknikler için, bir DataTable'ı Excel'e aktarma kılavuzu ve bir DataTable'ı Excel'e en hızlı şekilde aktarma öğreticisini inceleyin.

Büyük Veri Kümeleri ve Performansı Nasıl İdare Edersiniz?

On binlerce satırı Excel'e aktarmak, bellek tahsisine dikkat çekmeyi gerektirir. Büyük bir ızgaradaki her hücre için yeni bir hücre stili nesnesi oluşturmak en yaygın performans darboğazıdır. Mümkünse stil tanımlarını yeniden kullanın, bireysel hücreler yerine aralık nesnelerine stiller ayarlayarak:

IronXL Veri Kümesi Büyüklüğüne Göre Aktarma Yaklaşımları
Veri Kümesi BüyüklüğüÖnerilen YaklaşımAna Dikkat
5.000 satıra kadarHücre bazında stil döngüsüBasit kod, göz ardı edilebilir yük
5.000 -- 50.000 satırAralık düzeyinde stil uygulamasıNesne tahsislerini önemli ölçüde azaltır
50.000+ satırDataTable doğrudan aktarma, minimal stilHücre başına işlemleri minimize etmek; mevcutsa akış kullanın

Sayfalara bölünmüş GridView için her zaman AllowPaging = false ayarlayın ve ihraç etmeden önce yeniden bağlayın. Sayfalama, kontrolün görünür satırlarının sayısını sınırlar, bu yüzden sayfalı aktarım yalnızca mevcut sayfayı değil, tüm veri kümesini yakalar -- sıklıkla eksik aktarma hatalarının bir kaynağıdır.

Güçlü türde koleksiyonlarla değil, güçlü türde olmayan DataTable satırlarla çalışan desenler için C#'de bir nesne listesini Excel'e ihraç etme kılavuzunu da inceleyebilirsiniz.

ASP.NET Core veya Blazor'da Bir GridView Nasıl Aktarılır?

ASP.NET Core ve Blazor uygulamalarının Web Forms GridView denetimi yoktur, ancak temeldeki veri ihraç zorluğu aynıdır: bir nesne koleksiyonunu veya bir DataTable alın, stilli bir çalışma kitabı oluşturun ve bir dosya teslim edin. Çalışma kitabı oluşturma kodu aynıdır; sadece teslimat mekanizması değişir.

Bir Blazor uygulamasında, bir dosya indirme işlemini JavaScript interop yoluyla başlatın:

// In a Blazor component or service
using IronXL;
using System.Data;
using Microsoft.JSInterop;

public async Task ExportToExcelAsync(DataTable dt, IJSRuntime js)
{
    WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet sheet = workBook.DefaultWorkSheet;

    for (int col = 0; col < dt.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
        var cell = sheet.GetCellAt(0, col);
        cell.Style.Font.Bold = true;
        cell.Style.SetBackgroundColor("#4472C4");
        cell.Style.Font.Color = "#FFFFFF";
    }

    for (int row = 0; row < dt.Rows.Count; row++)
    {
        for (int col = 0; col < dt.Columns.Count; col++)
        {
            sheet.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);
        }
    }

    byte[] fileBytes = workBook.ToByteArray();
    string base64 = Convert.ToBase64String(fileBytes);
    await js.InvokeVoidAsync("downloadFileFromBase64", base64, "GridViewExport.xlsx",
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
}

Blazor indirme deseniyle ilgili tam yürüyüş Blazor'u Excel'e aktarma öğreticisinde mevcuttur. Bir ASP.NET Core denetleyici yaklaşıma ilişkin, ASP.NET Core Excel'e aktarma öğreticisini inceleyin.

Yazı Tipi Stili ve Kenarlık Seçenekleri

IronXL, her hücredeki Style nesnesi aracılığıyla ayrıntılı yazı tipi ve kenarlık denetimlerini ortaya koyar. C#'da Excel yazı tipleri için tam stil yelpazesi kalın, italik, altı çizili, boyut ve renk içerir. BorderType aracılığıyla kullanılabilir kenarlık türleri ince, orta, kalın, kesikli, noktalı, çift ve birkaç ince çizgi çeşidini kapsar.

Birleştirilmiş başlık satırları veya özet alt bilgileri için IronXL, C#'da Excel hücrelerini birleştirmeyi de destekler -- veritabanı tablonuzun üzerindeki birden fazla sütunu kapsayan tek bir başlık hücresi istediğinizde kullanışlıdır.

Verileri doldurduktan sonra sütun genişliklerini otomatik olarak ayarlamak için önerilen yaklaşım için C# kullanarak Excel hücrelerini otomatik ayarlama kılavuzuna bakın.

Neden Yerli Bir Excel Kütüphanesi, HtmlTextWriter'dan Daha Temiz Aktarımlar Üretir?

Geleneksel ASP.NET ihraç tekniği -- VerifyRenderingInServerForm geçersiz kılma, bir StringWriter ve HtmlTextWriter oluşturma ve oluşturulan denetimi yanıt olarak yazma -- .xls uzantılı bir HTML belgesi üretir. Microsoft Excel, bu tür dosyaları uyumluluk uyarısıyla açar çünkü dosya gerçekten bir Excel ikili veya OOXML formatında değildir. Stiller, Excel'in kısmen yorumladığı satır içi CSS ile sınırlıdır. Koşullu biçimlendirme imkansızdır. Windows dışındaki platformlarda veya LibreOffice kullanan kullanıcılar, bozuk çıktı görür.

IronXL, Open XML Elektronik Tablosu formatını (OOXML) doğrudan yazar. Sonuç, Excel'in kendisinin oluşturduğuyla özdeş olan -- Excel, LibreOffice, Google Sheets ve macOS'ta Numbers'ta uyarı vermeden açılan -- düzgün bir .xlsx dosyasıdır. Biçimlendirme, HTML nitelikleri olarak değil, elektronik tablo stilleri olarak kodlanır, bu nedenle dönüşlere ve çapraz platform görüntülemeye dayanır.

ASP.NET GridView için Aktarma Yöntemlerinin Karşılaştırılması
YöntemDosya FormatıFormat UyarılarıTam Stil DesteğiOfis Gerekli
HtmlTextWriter + StringWriterXLS olarak maskelenmiş HTMLEvetHayırHayır
Office Interop (COM)Yerel XLS/XLSXHayırEvetEvet
IronXLYerel XLSX/XLSHayırEvetHayır

IronXL'in üretmiş olduğu temel formatı açıklayan Microsoft'un Open XML SDK dokümantasyonuna bakın. ECMA International tarafından sürdürülen OOXML spesifikasyonu, çapraz uygulama uyumluluğunu garanti eden standardı tanımlar. Yukarıdaki aktarma desenlerinin okuduğu kontrol modelini tanımlayan Microsoft Dokümanlarında ASP.NET GridView kontrol dokümantasyonu bakın.

Sonraki Adımlarınız Neler?

IronXL kullanarak GridView ve DataGridView verilerini doğru biçimlendirilmiş XLSX dosyalarına aktarmak için gereken desenlere artık sahipsiniz -- Windows Forms, ASP.NET Web Forms, ASP.NET Core ve Blazor teslimat modellerini kapsamaktadır.

Daha ileri gitmek için:

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