IRONSOFTWAREHOME
IRONXL KULLANARAK

ASP.NET GridView'den Excel Dosyasına Veri Aktarma

Curtis Chau
Curtis Chau
Updated: 28 Haziran 2026

C# dilinde IronXL'i kurarak, bir WorkBook oluşturarak, GridView satırlarını yineleyerek, her hücre değerini karşılık gelen çalışma sayfası konumuna yazarak ve çalışma kitabını diske veya HTTP yanıt akışına kaydederek bir ASP.NET GridView'i Excel XLSX dosyasına aktarabilirsiniz. Bu yaklaşım, sunucuda Microsoft Office kurulumu gerektirmez ve .NET Framework, .NET Core ve .NET 5'ten .NET 10'a kadar web uygulamaları arasında güvenilir bir şekilde çalışır.

GridView verilerini Excel'e dışa aktarma, kurumsal ASP.NET Web Forms projelerinde standart bir gereksinimdir. Kullanıcılar, tarayıcıdan tablo verilerini raporlama, çevrimdışı analiz ve arşivleme için elektronik tablolara aktarmalıdır. Zorluk, sunucu tarafındaki GridView kontrolü ile düzgün yapılandırılmış bir .xlsx dosyası arasındaki boşluğu aşmak -- web sunucu ortamlarında çalışmayan Office Interop bağımlılıklarını eklemeden.

Bu kılavuz, üç aşamalı olarak zenginleştirilen dışa aktarma desenlerini adım adım açıklar: minimum düzeyde satır bazında bir dışa aktarma, sütun otomatik boyutlandırma ile başlık ve veri dışa aktarma ve oluşturulan HTML'yi tamamen atlayan bir DataTable-yönlendirmeli dışa aktarma. Her örnek, C# üst düzey açıklama-uyumlu kodu ve IronXL API'sini kullanır.

Bir ASP.NET Projesine IronXL Nasıl Kurulur?

Package Manager Console Visual Studio'da açın ve çalıştırın:

PM > Install-Package IronXL.Excel

Alternatif olarak, Solution Explorer içinde projeye sağ tıklayın, NuGet Paketlerini Yönet seçeneğini seçin, IronXL arayın ve Install tıklayın. NuGet tüm geçiş bağımlılıklarını otomatik olarak çözer.

Paket yüklendikten sonra, kod-behind dosyanıza aşağıdaki using yönergelerini ekleyin:

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

IronXL, .NET Framework 4.6.2 ve üstünün yanı sıra .NET Core 3.1 ve .NET 5'ten .NET 10'a kadar destekler. Sunucuda da Office kurulumu veya COM kaydı gerektirmez. Tam API belgeleri IronXL nesne referansında mevcuttur.

Hangi NuGet Paket Kimliği Kullanılmalıdır?

Doğru paket kimliği IronXL (IronXL.Excel değil, bu bir eski takma addır). Kurulumdan sonra, IronXL.dll bileşeni otomatik olarak referanslanır. Yüklü sürümü doğrulamak için Solution Explorer'daki Paketler düğümünü kontrol edebilir veya proje dizininden dotnet list package çalıştırabilirsiniz.

IronXL, ASP.NET Core Web Uygulamalarında Çalışır mı?

Evet. Aynı API hem ASP.NET Web Forms hem de ASP.NET Core (MVC veya Razor Pages) projelerinde çalışır. Core projelerinde, sunucu tarafı dosya yolları oluştururken Server.MapPath yerine IWebHostEnvironment.WebRootPath veya Path.Combine(Directory.GetCurrentDirectory(), "Exports") kullanılmalıdır.

GridView Nasıl Excel Dosyasına Dışa Aktarılır?

En basit dışa aktarma deseni GridView içinde işlemiş her satır üzerinde yineleme yapar ve her hücrenin metnini karşılık gelen Excel çalışma sayfası hücresine kopyalar. ASPX işaretlemesinde, bir <asp:GridView ID="gvEmployees" runat="server" AutoGenerateColumns="true" /> kontrolü ve bir <asp:Button ID="btnExport" runat="server" Text="Export to Excel" OnClick="btnExport_Click" /> düğmesi ekleyin. runat="server" özelliği, her iki kontrolü de kod-behind'de erişilebilir hale getirir.

Kod arkası, ilk yüklemede örnek verileri bağlar ve düğme tıklandığında dışa aktarır:

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

public partial class GridViewExport : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGridView();
        }
    }

    private void BindGridView()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("EmployeeID", typeof(int));
        dt.Columns.Add("Name", typeof(string));
        dt.Columns.Add("Department", typeof(string));
        dt.Columns.Add("Salary", typeof(decimal));

        dt.Rows.Add(1, "John Smith", "Engineering", 75000);
        dt.Rows.Add(2, "Sarah Johnson", "Marketing", 65000);
        dt.Rows.Add(3, "Michael Chen", "Finance", 70000);

        ViewState["EmployeeData"] = dt;
        gvEmployees.DataSource = dt;
        gvEmployees.DataBind();
    }

    protected void btnExport_Click(object sender, EventArgs e)
    {
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Employees");

        // Write header row
        for (int j = 0; j < gvEmployees.HeaderRow.Cells.Count; j++)
        {
            worksheet.SetCellValue(0, j, gvEmployees.HeaderRow.Cells[j].Text);
        }

        // Write data rows
        for (int i = 0; i < gvEmployees.Rows.Count; i++)
        {
            for (int j = 0; j < gvEmployees.Rows[i].Cells.Count; j++)
            {
                worksheet.SetCellValue(i + 1, j, gvEmployees.Rows[i].Cells[j].Text);
            }
        }

        string filePath = Server.MapPath("~/Exports/EmployeeData.xlsx");
        workbook.SaveAs(filePath);
    }
}

WorkBook.Create(ExcelFileFormat.XLSX) çağrısı, modern Open XML formatını hedefleyen bir hafıza içi çalışma kitabını başlatır. CreateWorkSheet("Employees") ilk sayfayı ekler. Dış döngü (i) veri satırlarında ilerler; iç döngü (j) sütunlarda ilerler. Satır indeks i + 1, başlığın 0. satırda üzerine yazılmaması için veri hücreleri için kullanılır.

Neden IronXL Kullanmalıyız Excel Interop Yerine?

Excel Interop, sunucuda lisanslı bir Microsoft Excel kopyası gerektirir ve bellek sızıntılarını önlemek için açıkça serbest bırakılması gereken COM nesneleri oluşturur. IronXL, Open XML paketleri olarak direkt .xlsx dosyalarını okur ve yazar -- COM, Office veya Marshal.ReleaseComObject şablon gerektirmez. Bu, Office'un bulunmadığı IIS, Azure App Service, Docker ve diğer sunucu ortamlarında güvenirliği sağlar.

XLSX İndirme İşlemleri İçin Doğru MIME Türü Nedir?

Tarayıcının baytları satır içi sunmak yerine bir dosya kaydetme iletişim kutusu açmasını istediğinizde, yanıt içerik türünü application/vnd.openxmlformats-officedocument.spreadsheetml.sheet olarak ayarlayın ve çalışma kitabı baytlarını yanıt akışına yazmadan önce bir Content-Disposition: attachment başlığı ekleyin.

Sütun Başlıkları Nasıl Eklenir ve Sütunlar Nasıl Otomatik Boyutlandırılır?

Temel örnek HeaderRow.Cells'den çıkarılan başlıkları yazar ancak üretim dışa aktarımı da her sütunu Excel'de manuel ayarlamalar yapmadan okunabilir olacak şekilde otomatik boyutlandırmalıdır:

protected void btnExport_Click(object sender, EventArgs e)
{
    WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet worksheet = workbook.CreateWorkSheet("Employees");

    // Write column headers
    int colCount = gvEmployees.HeaderRow.Cells.Count;
    for (int i = 0; i < colCount; i++)
    {
        string header = gvEmployees.HeaderRow.Cells[i].Text;
        worksheet.SetCellValue(0, i, header);
    }

    // Write data rows
    for (int i = 0; i < gvEmployees.Rows.Count; i++)
    {
        for (int j = 0; j < gvEmployees.Rows[i].Cells.Count; j++)
        {
            worksheet.SetCellValue(i + 1, j, gvEmployees.Rows[i].Cells[j].Text);
        }
    }

    // Auto-size each column for readability
    for (int col = 0; col < colCount; col++)
    {
        worksheet.AutoSizeColumn(col);
    }

    string filePath = Server.MapPath("~/Exports/EmployeeReport.xlsx");
    workbook.SaveAs(filePath);
}

AutoSizeColumn(col), IronXL'i hücre içerik uzunluğuna göre en uygun sütun genişliğini hesaplaması için yönlendirir, bu da Excel masaüstü uygulamasında Biçim > Sütun Genişliğini Otomatik Ayarla işlemini yansıtır. Tüm veriler yazıldıktan sonra bir döngüde bunu çağırmak, her satırdan sonra çağırmaktan daha etkilidir çünkü nihayetinde içerik o noktada bilinir.

Ek stil seçenekleri -- kalın başlıklar, arka plan renkleri, sayı formatları -- için IronXL hücre stil kılavuzu'nu keşfedin. Birden çok sütuna yayılan rapor başlıkları oluşturmak için hücreleri birleştirebilirsiniz.

Başlık Hücrelerine Kalın Format Nasıl Uygulanır?

IStyle, worksheet["A1"].Style tarafından döndürülen obje (veya bir aralık) kullanın. Değerleri yazmadan önce veya sonra Font.Bold = true ayarlayın -- stil hücre içeriğinden ayrıdır:

// Bold the entire header row (columns A through D)
var headerRange = worksheet["A1:D1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.FontColor = "#FFFFFF";

Bu desen, herhangi bir boyutta aralıklar için eşit şekilde uygulanır. Stil özelliklerinin tam listesi için IronXL stil API referansı bakın.

Veri Nasıl Yalnızca Bir DataTable'dan Dışa Aktarılır?

İşlenmiş GridView satırları üzerinde yineleme yapmak, dışa aktarmanızı kontrolün mevcut görsel durumuna bağlar, bu da sayfalama, sıralama ve sütun görünürlüğü ayarlarından etkilenebilir. Özünde saklanan DataTable üzerinden dışa aktarma, ızgaranın nasıl yapılandırıldığına bakılmaksızın belirlenmiş bir sonuç üretir:

protected void btnExport_Click(object sender, EventArgs e)
{
    DataTable sourceData = ViewState["EmployeeData"] as DataTable;
    if (sourceData == null)
    {
        Response.Write("No data available to export.");
        return;
    }

    WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet worksheet = workbook.CreateWorkSheet("Report");

    // Column headers from DataTable schema
    for (int i = 0; i < sourceData.Columns.Count; i++)
    {
        worksheet.SetCellValue(0, i, sourceData.Columns[i].ColumnName);
    }

    // Data rows from DataRow objects
    for (int i = 0; i < sourceData.Rows.Count; i++)
    {
        for (int j = 0; j < sourceData.Columns.Count; j++)
        {
            worksheet.SetCellValue(i + 1, j, sourceData.Rows[i][j].ToString());
        }
    }

    string filePath = Server.MapPath("~/Exports/DataExport.xlsx");
    workbook.SaveAs(filePath);
}

Sütun isimleri, GridView şablonunda uygulanan herhangi bir görüntü adı geçersiz kılmalarından ziyade orijinal veri şemasını yansıtan DataTable.Columns[i].ColumnName'den gelir. Hücre değerleri DataRow objelerinden sütun indeksi kullanılarak alınır, her değeri SetCellValue tatmin etmek için string'e dönüştürür.

Bu desen, GridView sayfalama kullandığında özellikle değerlidir -- gvEmployees.Rows üzerinde yineleme, yalnızca şu anda görünen sayfadaki satırları döndürürken, tam DataTable'den okuma her kaydı dışa aktarır.

Büyük DataTable Dışa Aktarım ile Ne Olur?

IronXL, büyük Excel veri setleri için etkili bir şekilde çalışma kitabı verilerini akışa alır. 100.000'den fazla satır içeren dışa aktarmalar için, iç içe döngüdeki bireysel hücreleri ayarlamaktansa, tek bir çalışma sayfası işlemi içinde SetCellValue çağrılarını toplamak üzerine düşünün. Ayrıca, çalışma kitabını bir MemoryStream'a yazabilir ve sunucu RAM'inde tüm dosyayı tutmaktan kaçınmak için Response akışına kademeli olarak boşaltabilirsiniz.

Dışa Aktarım Sırasında Hatalar Nasıl Yönetilir?

Üretim dışa aktarma işleyicileri, bir catch bloğu içinde IronXL işlemlerini sarmalı ve bir şeyler ters gittiğinde kullanıcıya açıklayıcı bir mesaj döndürmelidir. Yaygın hata modları arasında eksik ~/Exports/ dizini, dosya izin hataları ve oturum zaman aşımından sonra ViewState'nin null olması bulunur:

protected void btnExport_Click(object sender, EventArgs e)
{
    try
    {
        DataTable sourceData = ViewState["EmployeeData"] as DataTable;
        if (sourceData == null)
            throw new InvalidOperationException("Session data has expired. Please reload the page.");

        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Employees");

        for (int i = 0; i < sourceData.Columns.Count; i++)
            worksheet.SetCellValue(0, i, sourceData.Columns[i].ColumnName);

        for (int i = 0; i < sourceData.Rows.Count; i++)
            for (int j = 0; j < sourceData.Columns.Count; j++)
                worksheet.SetCellValue(i + 1, j, sourceData.Rows[i][j].ToString());

        string filePath = Server.MapPath("~/Exports/SafeExport.xlsx");
        workbook.SaveAs(filePath);

        lblStatus.Text = "Export successful. File saved to server.";
    }
    catch (Exception ex)
    {
        lblStatus.Text = $"Export failed: {ex.Message}";
    }
}

Dosyayı diske kaydetmek yerine doğrudan tarayıcı indirimi olarak sunan web uygulamaları için, içerik türü ve konum başlıklarını ayarladıktan sonra Response.BinaryWrite kullanın veya Response.OutputStream üzerine yazın. ~/Exports/ dizininin mevcut olduğundan ve IIS uygulama havuzu kimliğinin yazma iznine sahip olduğundan emin olun.

XLSX Dosyası Tarayıcı İndirimi Olarak Nasıl Gönderilir?

workbook.SaveAs(filePath) bir akış tabanlı yanıtla değiştirin:

using System.IO;

// ... inside btnExport_Click after populating the worksheet ...

byte[] fileBytes;
using (MemoryStream ms = new MemoryStream())
{
    workbook.SaveAs(ms);
    fileBytes = ms.ToArray();
}

Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition", "attachment; filename=EmployeeData.xlsx");
Response.BinaryWrite(fileBytes);
Response.End();

Bu desen, geçici bir dosyayı disk üzerine yazmaktan kaçınır. MemoryStream sunucuda tahsis edilir, byte[] olarak sıralanır ve doğrudan müşteriye gönderilir. Response.End() çağrısı yanıtı boşaltır ve eklenen ikili veriden sonra herhangi bir sayfa işaretlemesinin eklenmesini önler.

Birden Çok Sayfa veya Gelişmiş Çalışma Kitapları Nasıl Dışa Aktarılır?

Tek bir WorkBook birden fazla sayfa içerebilir, bu da birkaç GridView'i -- veya aynı veri kümesini farklı ayrıntılı olarak -- tek bir dosyada dışa aktarmanız gerektiğinde kullanışlıdır. Her sekme için bir kez workbook.CreateWorkSheet(name) çağırın:

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);

WorkSheet summary = workbook.CreateWorkSheet("Summary");
WorkSheet detail  = workbook.CreateWorkSheet("Detail");

// Populate summary sheet ...
// Populate detail sheet ...

workbook.SaveAs(Server.MapPath("~/Exports/FullReport.xlsx"));

IronXL ayrıca mevcut Excel dosyalarını okuma destekler, böylece markalama ve formatlama ile önceden oluşturulmuş bir şablon yükleyebilir, belirli hücrelere veri yerleştirebilir ve sonucu kaydedebilirsiniz – şablonda zaten mevcut olan grafikler, resimler ve stiller korunarak.

Daha zengin bir çıktı için,IronXLExcel formül desteği, koşullu biçimlendirme, grafik oluşturma ve görüntü ekleme sağlar. Bu yetenekler, IronXL öğreticileri bölümünde belgelenmiştir.

IronXL,EPPlusveClosedXMLile Nasıl Karşılaştırılır?

ÖzellikIronXLEPPlusClosedXML
Ofis kurulumu gerekliHayırHayırHayır
XLSX okuma ve yazmaEvetEvetEvet
XLS (eski) destekEvetHayırHayır
CSV / TSV dışa aktarımEvetHayırKısmi
Grafik oluşturma APIEvetEvetSınırlı
Lisans modeliSüresiz + SaaSPoli form ticari olmayanMIT
.NET 10 destekEvetEvetEvet

EPPlus, 5. sürümde ticari bir lisansa geçerek, IronXL'i zaten ticari bir .NET kütüphanesi ekosistemine yatırım yapan ekipler için doğal bir alternatif haline getirdi. ClosedXMLMITlisanslı olarak kalırken, sınırlı grafik desteğine sahiptir. Doğru seçim, projenizin lisanslama kısıtlamalarına, ihtiyaç duyduğunuz Excel özelliklerine ve eski .xls formatı desteğinin bir gereklilik olup olmadığına bağlıdır.

###IronXL Hangi Excel Formatlarını Destekler?

IronXL, .xlsx (Office Open XML), .xls (legacy BIFF8), .csv, ve .tsv formatlarını okur ve yazar. Excel dosya formatları arasında tek bir API çağrısıyla dönüşüm yapabilirsiniz -- ExcelFileFormat enum değerini WorkBook.Create'a geçirerek ya da mevcut bir dosyayı yükleyip farklı bir formatta kaydederek.

Sonraki Adımlarınız Neler?

Artık ASP.NET GridView verilerini Excel XLSX dosyalarına dışa aktarmak için üç üretim hazır paterne sahipsiniz:

  • Satır yineleme ihracatı -- bağlı bir GridView ile çalışan bir dışa aktarma için en hızlı yol
  • Başlık ve formatlama dışa aktarımı -- sunulabilir raporlar için sütun boyutlarını otomatik ayarlar ve kalın başlıklar ekler
  • DataTable'tan yürütülen dışa aktarma -- işlemden geçirilmiş kontrolü tamamen atlayarak sayfalı veya filtrelenmiş gridler için

Sonraki mantıklı adımlar şunlardır:

  1. Bir tarayıcı indirimi yanıtı ekleyin MemoryStream ve Response.BinaryWrite kullanarak, böylece kullanıcılar dosyayı sunucu tarafında bir kayıt yoluna ihtiyaç duymadan hemen alır.
  2. Hücre biçimlendirmesini uygulayın -- kalın başlıklar, arka plan renk dolguları ve sayı formatları -- IronXL biçimlendirme API'sini kullanarak.
  3. Özet ve ayrıntı verilerini, ilgili taraflara teslim edilen tek bir dosyada birleştirmek amacıyla çok sayfalı çalışma kitaplarını keşfetmek.
  4. Excel dosyalarını geri okuyun için DataTable nesnelerine dönüştürün ve IronXL'in okuma API'si kullanarak döngüsel içe/dışa aktarma iş akışlarına olanak tanıyın.
  5. Projenizdeki tüm özellikleri, tam kapasiteli bir deneme lisansında %@--CODE-14334--@@ ve %@--CODE-14335--@@ kullanarak test etmek için ücretsiz bir deneme başlatın.

Belge oluşturma hatları oluşturan ekipler için , IronPDF ile entegre edilir @--CODE-14336--@@ çıkarmak için çalışma kağıtlarını PDF'ye dışa aktarır. Iron Suite , IronXL, IronPDF, IronOCR, IronBarcode ve IronZIP'i bir araya getirerek uygun bir fiyatla sunar.

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