Altbilgi içeriğine atla
IRONXL KULLANARAK

C# Kullanarak GridView'den Excele Nasıl Aktarılır

ASP.NET web uygulamalarında gerçek bir Excel dosyasına GridView verisini dışa aktarmak en yaygın gereksinimlerden biridir. Geleneksel yaklaşımlar, HtmlTextWriter ve StringWriter kullanarak sahte Excel dosyaları oluşturur, bu da kullanıcılar bunları açmaya çalıştığında tarayıcı uyarılarını ve biçim hatalarını tetikler. Bu kılavuz, geliştiricilerin eski yöntemlerle karşılaştığı sorunları ortadan kaldırarak, IronXL kullanarak GridView verilerini düzgün formatlanmış .xlsx dosyalarına nasıl aktaracağınızı gösterir.

Geleneksel GridView Dışa Aktarım Yaklaşımı Neden Sorunlara Yol Açıyor?

ASP.NET C#'da GridView'den Excel'e aktarma için klasik yöntem, HTML'nin işlenmesi ve Response başlıklarının Content-Disposition ek dosya adı değerleri ile ayarlanmasını içerir. Bu yaklaşım, çalışma zamanı hatalarını önlemek için public override void VerifyRenderingInServerForm'nın geçersiz kılınmasını gerektirir. Ortaya çıkan dosya gerçek bir Excel dosyası değildir -- bir .xls uzantısı ile kılık değiştiren HTML olup, kullanıcılar açtığında Excel'in uyarı mesajları göstermesine neden olur.

Özellikle, geleneksel teknik şu dezavantajlara sahiptir:

  • Excel her açılışta "Dosya formatı ve uzantı uyuşmuyor" uyarısı gösterir
  • Veriler hammade HTML olarak saklandığı için biçimlendirme ve veri türleri kaybolur
  • Projenize teknik borç ekleyerek bir geçici çözüm olarak VerifyRenderingInServerForm uygulamanız gerekir
  • Elde edilen dosya, uygun hücre meta verilerine sahip olmadan, daha aşağıda otomasyon veya raporlama araçları için kullanılamaz

IronXL, sunucuda Microsoft Office yüklemesi gerektirmeden gerçek .xlsx Excel dosyaları oluşturarak bu sorunları çözer. Herhangi bir elektronik tablo uygulamasının temiz bir şekilde açabileceği, uygun veri türlerini, stili ve OOXML yapısını koruyan bir dosya alırsınız.

IronXL Asp.Net Projenize Nasıl Eklenir?

Herhangi bir dışa aktarma mantığını yazmadan önce, IronXL'i NuGet Paket Yöneticisi'ni kullanarak projenize ekleyin. Visual Studio'da Paket Yöneticisi Konsolunu açın ve şu komutu çalıştırın:

Install-Package IronXL.Excel

Alternatif olarak, NuGet Paket Yöneticisi UI'sında IronXL.Excel arayın ve oradan yükleyin. Yüklendikten sonra, herhangi bir kod arkası dosyada IronXL ad alanına başvurabilirsiniz.

IronXL, .NET Standard 2.0 ve üstünü hedeflediği için, modern ASP.NET Core projeleri ve klasik ASP.NET Framework uygulamaları ile çalışır. Web sunucunuzda COM interop, Office kurulumu veya ek yerel bağımlılıklar gerekmez.

Detaylar için IronXL kurulum kılavuzuna ve IronXL NuGet paket sayfasına bakınız.

ASP.NET GridView'i Dışa Aktarım için Nasıl Kurarsınız?

Default.aspx sayfanızı bir GridView kontrolü ve bir dışa aktarma düğmesi ile oluşturun. İşaretleme standart Web Forms yapısındadır:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="GridViewExportTest.Default" %>
<!DOCTYPE html>
<html>
<head runat="server">
    <title>Export GridView to Excel</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <h2>IronXL GridView Export Demo</h2>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"
                HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White" CellPadding="5">
            </asp:GridView>
            <br />
            <asp:Button ID="btnExport" runat="server" Text="Export to Excel (.xlsx)"
                OnClick="btnExport_Click" />
        </div>
    </form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="GridViewExportTest.Default" %>
<!DOCTYPE html>
<html>
<head runat="server">
    <title>Export GridView to Excel</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <h2>IronXL GridView Export Demo</h2>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"
                HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White" CellPadding="5">
            </asp:GridView>
            <br />
            <asp:Button ID="btnExport" runat="server" Text="Export to Excel (.xlsx)"
                OnClick="btnExport_Click" />
        </div>
    </form>
</body>
</html>
$vbLabelText   $csharpLabel

Bu işaretleme, bağlanmış bir GridView ve dışa aktarmayı tetikleyen bir düğme ile basit bir sayfa oluşturur. AutoGenerateColumns="true" özelliği, ızgaranın sütun adlarını doğrudan bağlanmış DataTable'dan okuduğu anlamına gelir.

GridView'e Örnek Verileri Bağlama

Kod arkanızda bir DataTable'ı ızgaraya bağlayın ve bir dışa aktarma geri gönderimi sırasında daha sonra kullanmak için Session içinde saklayın:

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

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

        private void BindGridView()
        {
            DataTable dt = new DataTable("Employees");
            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, "Mike Wilson", "Sales", 70000);
            dt.Rows.Add(4, "Emily Davis", "Engineering", 80000);

            GridView1.DataSource = dt;
            GridView1.DataBind();

            // Store DataTable in Session for export postback
            Session["GridData"] = dt;
        }
    }
}
using System;
using System.Data;
using System.Web.UI;
using IronXL;

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

        private void BindGridView()
        {
            DataTable dt = new DataTable("Employees");
            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, "Mike Wilson", "Sales", 70000);
            dt.Rows.Add(4, "Emily Davis", "Engineering", 80000);

            GridView1.DataSource = dt;
            GridView1.DataBind();

            // Store DataTable in Session for export postback
            Session["GridData"] = dt;
        }
    }
}
Imports System
Imports System.Data
Imports System.Web.UI
Imports IronXL

Namespace GridViewExport
    Partial Public Class [Default]
        Inherits Page

        Protected Sub Page_Load(sender As Object, e As EventArgs)
            If Not IsPostBack Then
                BindGridView()
            End If
        End Sub

        Private Sub BindGridView()
            Dim dt As New DataTable("Employees")
            dt.Columns.Add("EmployeeID", GetType(Integer))
            dt.Columns.Add("Name", GetType(String))
            dt.Columns.Add("Department", GetType(String))
            dt.Columns.Add("Salary", GetType(Decimal))

            dt.Rows.Add(1, "John Smith", "Engineering", 75000)
            dt.Rows.Add(2, "Sarah Johnson", "Marketing", 65000)
            dt.Rows.Add(3, "Mike Wilson", "Sales", 70000)
            dt.Rows.Add(4, "Emily Davis", "Engineering", 80000)

            GridView1.DataSource = dt
            GridView1.DataBind()

            ' Store DataTable in Session for export postback
            Session("GridData") = dt
        End Sub
    End Class
End Namespace
$vbLabelText   $csharpLabel

DataTableSession içerisinde saklamak, dışa aktarma düğmesinin tetiklediği geri gönderim sırasında veritabanını yeniden sorgulamaktan veya veriyi yeniden oluşturmaktan kaçınır. Gerçek uygulamalar için sabit satırlar yerine, bir Entity Framework veya ADO.NET kullanarak veritabanı sorgusu koyun.

GridView'den Excel'e ASP .NET C#'de Dışa Aktarma: Temiz Bir C# Çözümü: Görsel 1 - Örnek GridView verilerini gösteren arayüz

IronXL Kullanarak GridView Verilerini Excel'e Nasıl Aktarırsınız?

GridView dışa aktarma için temizlik yaklaşımı, DataTable'ınızı bir IronXL WorkBook'ına dönüştürür ve sonucu doğrudan tarayıcıya akıtır. İşte tam dışa aktarma yöntemi:

protected void btnExport_Click(object sender, EventArgs e)
{
    ExportGridViewToExcel();
}

private void ExportGridViewToExcel()
{
    DataTable dt = (DataTable)Session["GridData"];

    // Create a workbook and load data from the DataTable
    WorkBook workbook = WorkBook.Create();
    WorkBook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } }, workbook);
    WorkSheet worksheet = workbook.DefaultWorkSheet;

    // Apply header row formatting
    var headerRange = worksheet["A1:D1"];
    headerRange.Style.Font.Bold = true;
    headerRange.Style.Font.Size = 12;
    headerRange.Style.SetBackgroundColor("#3AC0F2");

    // Stream the file to the browser
    string filename = "GridViewExport_" + DateTime.Now.ToString("yyyyMMdd") + ".xlsx";
    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("content-disposition", "attachment;filename=" + filename);
    workbook.SaveAsStream(Response.OutputStream, IronXL.Enum.FileFormat.Xlsx);
    Response.Flush();
    Response.End();
}
protected void btnExport_Click(object sender, EventArgs e)
{
    ExportGridViewToExcel();
}

private void ExportGridViewToExcel()
{
    DataTable dt = (DataTable)Session["GridData"];

    // Create a workbook and load data from the DataTable
    WorkBook workbook = WorkBook.Create();
    WorkBook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } }, workbook);
    WorkSheet worksheet = workbook.DefaultWorkSheet;

    // Apply header row formatting
    var headerRange = worksheet["A1:D1"];
    headerRange.Style.Font.Bold = true;
    headerRange.Style.Font.Size = 12;
    headerRange.Style.SetBackgroundColor("#3AC0F2");

    // Stream the file to the browser
    string filename = "GridViewExport_" + DateTime.Now.ToString("yyyyMMdd") + ".xlsx";
    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("content-disposition", "attachment;filename=" + filename);
    workbook.SaveAsStream(Response.OutputStream, IronXL.Enum.FileFormat.Xlsx);
    Response.Flush();
    Response.End();
}
Imports System
Imports System.Data

Protected Sub btnExport_Click(sender As Object, e As EventArgs)
    ExportGridViewToExcel()
End Sub

Private Sub ExportGridViewToExcel()
    Dim dt As DataTable = DirectCast(Session("GridData"), DataTable)

    ' Create a workbook and load data from the DataTable
    Dim workbook As WorkBook = WorkBook.Create()
    WorkBook.LoadWorkSheetsFromDataSet(New DataSet With {.Tables = {dt}}, workbook)
    Dim worksheet As WorkSheet = workbook.DefaultWorkSheet

    ' Apply header row formatting
    Dim headerRange = worksheet("A1:D1")
    headerRange.Style.Font.Bold = True
    headerRange.Style.Font.Size = 12
    headerRange.Style.SetBackgroundColor("#3AC0F2")

    ' Stream the file to the browser
    Dim filename As String = "GridViewExport_" & DateTime.Now.ToString("yyyyMMdd") & ".xlsx"
    Response.Clear()
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
    Response.AddHeader("content-disposition", "attachment;filename=" & filename)
    workbook.SaveAsStream(Response.OutputStream, IronXL.Enum.FileFormat.Xlsx)
    Response.Flush()
    Response.End()
End Sub
$vbLabelText   $csharpLabel

Adım Adım Dışa Aktarım Nasıl Çalışır?

İşlem üç mantıksal adımda parçalanır:

  1. DataTable'ı Alın -- Session["GridData"], ızgaraya bağlanan aynı DataTable'ı döndürür. Bu, tekrar eden veri tabanı çağrılarını önler.
  2. WorkBook'u Oluşturun -- WorkBook.LoadWorkSheetsFromDataSet, DataSet içindeki her DataTable için otomatik olarak bir çalışma sayfası oluşturur, sütun başlıklarını ve satır değerlerini ilgili hücrelere kopyalar.
  3. Tarayıcıya Akıtın -- Content-Type OOXML MIME türüne ayarlandığında ve Response.OutputStream'e yazıldığında, doğru .xlsx uzantısı ile bir tarayıcı indirmesi başlatır. Disk'e geçici bir dosya yazılmamaktadır.

Bu, eski HtmlTextWriter yaklaşımından temelde farklıdır. Dışa aktarılan dosya, Microsoft Excel'in yerel olarak kullandığı Open XML formatını kullanır, böylece uyarılar olmadan açılır.

Verileri programatik olarak yükleme hakkında daha fazla bilgi için IronXL WorkBook belgelerine ve C#'da DataTable'ı Excel'e dışa aktarma rehberi'ne bakın.

GridView'den Excel'e ASP .NET C#'de Dışa Aktarma: Temiz Bir C# Çözümü: Görsel 2 - Dışa Aktarılmış Excel dosyası

Excel Dosyasını Yayınlamak Yerine Diske Nasıl Kaydedersiniz?

Uygulamanız, kullanıcıya bir indirme bağlantısı sağlamadan önce dışa aktarımları sunucuda arşivlemeye ihtiyaç duyuyorsa, çalışma kitabını Response.OutputStream'ya akıtmak yerine bir dosya yoluna kaydedin:

private void SaveExcelToDisk(WorkBook workbook, string exportFolder)
{
    // Ensure the exports directory exists
    if (!System.IO.Directory.Exists(exportFolder))
    {
        System.IO.Directory.CreateDirectory(exportFolder);
    }

    string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
    string filename = System.IO.Path.Combine(exportFolder, $"Report_{timestamp}.xlsx");

    workbook.SaveAs(filename);

    // Return the relative path for generating a download link
    string relativePath = "~/Exports/Report_" + timestamp + ".xlsx";
    Response.Write($"<script>alert('File saved to {relativePath}');</script>");
}
private void SaveExcelToDisk(WorkBook workbook, string exportFolder)
{
    // Ensure the exports directory exists
    if (!System.IO.Directory.Exists(exportFolder))
    {
        System.IO.Directory.CreateDirectory(exportFolder);
    }

    string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
    string filename = System.IO.Path.Combine(exportFolder, $"Report_{timestamp}.xlsx");

    workbook.SaveAs(filename);

    // Return the relative path for generating a download link
    string relativePath = "~/Exports/Report_" + timestamp + ".xlsx";
    Response.Write($"<script>alert('File saved to {relativePath}');</script>");
}
Private Sub SaveExcelToDisk(workbook As WorkBook, exportFolder As String)
    ' Ensure the exports directory exists
    If Not System.IO.Directory.Exists(exportFolder) Then
        System.IO.Directory.CreateDirectory(exportFolder)
    End If

    Dim timestamp As String = DateTime.Now.ToString("yyyyMMdd_HHmmss")
    Dim filename As String = System.IO.Path.Combine(exportFolder, $"Report_{timestamp}.xlsx")

    workbook.SaveAs(filename)

    ' Return the relative path for generating a download link
    Dim relativePath As String = "~/Exports/Report_" & timestamp & ".xlsx"
    Response.Write($"<script>alert('File saved to {relativePath}');</script>")
End Sub
$vbLabelText   $csharpLabel

Yayınlama ve Disk'e Kaydetme Arasında Seçim Yapma

Yayınlama ve disk kaydetme dışa aktarma stratejileri karşılaştırması
Strateji Artılar Eksiler En İyi İçin
Tarayıcıya yayınlayarak Disk kullanımı yok, anında teslim Arşivleme veya tekrar gönderme yapılamaz Talebe bağlı kullanıcı dışa aktarımları
Disk'e kaydet Dosya denetim için, yeniden indirme veya e-posta için kalır Temizlik işi gerektirir, disk alanı yönetimi Planlı raporlar, denetim izleri

Çoğu etkileşimli web uygulaması için, doğrudan tarayıcıya yayınlama doğru seçenektir. Dosyayı e-posta ile göndermeniz, uyumluluk için saklamanız veya bir dosya yönetim sayfasından tekrar indirilebilir hale getirmeniz gerektiğinde diske kaydedin.

Dışa Aktarılan Excel Sayfasına İleri Düzeyde Biçimlendirme Nasıl Uygulanır?

IronXL, hücre stilleri, sütun genişlikleri, sayı formatları ve daha fazlası üzerinde ince ayarlı kontrol sağlar. Aşağıdaki örnek, profesyonel bir şekilde stillendirilmiş bir dışa aktarım nasıl oluşturulacağını göstermektedir:

private void ExportWithFormatting()
{
    DataTable dt = new DataTable("Products");
    dt.Columns.Add("Product", typeof(string));
    dt.Columns.Add("Category", typeof(string));
    dt.Columns.Add("Price", typeof(decimal));
    dt.Columns.Add("InStock", typeof(bool));

    dt.Rows.Add("Widget A", "Hardware", 29.99m, true);
    dt.Rows.Add("Widget B", "Hardware", 49.99m, false);
    dt.Rows.Add("Service Plan", "Support", 199.00m, true);

    WorkBook workbook = WorkBook.Create();
    WorkBook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } }, workbook);
    WorkSheet sheet = workbook.WorkSheets[0];

    // Style the header row
    sheet["A1:D1"].Style.Font.Bold = true;
    sheet["A1:D1"].Style.Font.Size = 13;
    sheet["A1:D1"].Style.SetBackgroundColor("#2196F3");
    sheet["A1:D1"].Style.Font.Color = "#FFFFFF";

    // Apply currency format to the Price column (column C, rows 2 onwards)
    sheet["C2:C4"].Style.NumberFormat.Format = "$#,##0.00";

    // Auto-size all columns for readability
    for (int col = 0; col < 4; col++)
    {
        sheet.AutoSizeColumn(col);
    }

    // Freeze the header row so it stays visible when scrolling
    sheet.FreezePanes(0, 0, 1, 0);

    workbook.SaveAs("FormattedExport.xlsx");
}
private void ExportWithFormatting()
{
    DataTable dt = new DataTable("Products");
    dt.Columns.Add("Product", typeof(string));
    dt.Columns.Add("Category", typeof(string));
    dt.Columns.Add("Price", typeof(decimal));
    dt.Columns.Add("InStock", typeof(bool));

    dt.Rows.Add("Widget A", "Hardware", 29.99m, true);
    dt.Rows.Add("Widget B", "Hardware", 49.99m, false);
    dt.Rows.Add("Service Plan", "Support", 199.00m, true);

    WorkBook workbook = WorkBook.Create();
    WorkBook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } }, workbook);
    WorkSheet sheet = workbook.WorkSheets[0];

    // Style the header row
    sheet["A1:D1"].Style.Font.Bold = true;
    sheet["A1:D1"].Style.Font.Size = 13;
    sheet["A1:D1"].Style.SetBackgroundColor("#2196F3");
    sheet["A1:D1"].Style.Font.Color = "#FFFFFF";

    // Apply currency format to the Price column (column C, rows 2 onwards)
    sheet["C2:C4"].Style.NumberFormat.Format = "$#,##0.00";

    // Auto-size all columns for readability
    for (int col = 0; col < 4; col++)
    {
        sheet.AutoSizeColumn(col);
    }

    // Freeze the header row so it stays visible when scrolling
    sheet.FreezePanes(0, 0, 1, 0);

    workbook.SaveAs("FormattedExport.xlsx");
}
Private Sub ExportWithFormatting()
    Dim dt As New DataTable("Products")
    dt.Columns.Add("Product", GetType(String))
    dt.Columns.Add("Category", GetType(String))
    dt.Columns.Add("Price", GetType(Decimal))
    dt.Columns.Add("InStock", GetType(Boolean))

    dt.Rows.Add("Widget A", "Hardware", 29.99D, True)
    dt.Rows.Add("Widget B", "Hardware", 49.99D, False)
    dt.Rows.Add("Service Plan", "Support", 199.0D, True)

    Dim workbook As WorkBook = WorkBook.Create()
    WorkBook.LoadWorkSheetsFromDataSet(New DataSet With {.Tables = {dt}}, workbook)
    Dim sheet As WorkSheet = workbook.WorkSheets(0)

    ' Style the header row
    sheet("A1:D1").Style.Font.Bold = True
    sheet("A1:D1").Style.Font.Size = 13
    sheet("A1:D1").Style.SetBackgroundColor("#2196F3")
    sheet("A1:D1").Style.Font.Color = "#FFFFFF"

    ' Apply currency format to the Price column (column C, rows 2 onwards)
    sheet("C2:C4").Style.NumberFormat.Format = "$#,##0.00"

    ' Auto-size all columns for readability
    For col As Integer = 0 To 3
        sheet.AutoSizeColumn(col)
    Next

    ' Freeze the header row so it stays visible when scrolling
    sheet.FreezePanes(0, 0, 1, 0)

    workbook.SaveAs("FormattedExport.xlsx")
End Sub
$vbLabelText   $csharpLabel

IronXL'de Bulunan Biçimlendirme Seçenekleri

IronXL, IronXL.Styles ad alanı aracılığıyla zengin bir biçimlendirme özellik seti sunar:

  • Yazı tipi stili -- kalın, italik, altı çizili, yazı tipi ailesi ve boyutu
  • Hücre arka plan renkleri -- doğrudan kabul edilen hex renk dizeleri
  • Sayı ve tarih formatları -- para birimi, yüzde ve tarih kalıpları dahil her türlü Excel format dizeleri
  • Sütun genişliği -- manuel piksel genişliği veya otomatik sığma için AutoSizeColumn
  • Pencere dondurma -- kaydırma sırasında başlık satırlarını veya sütunları kilitleyin
  • Hücre kenarlıkları -- konfigüre edilebilir stil ve renkle tüm dört kenarlık
  • Hücreleri birleştir -- rapor başlıkları için satır veya sütunlar arasında hücreleri birleştirin

Tam API referansı için IronXL hücre stil belgesine ve IronXL sayı formatlama belgelerine bakın.

GridView'den Excel'e ASP .NET C#'de Dışa Aktarma: Temiz Bir C# Çözümü: Görsel 3 - Dışa Aktarılmış biçimlendirilmiş Excel belgesi

GridView Dışa Aktarımlarında Büyük Veri Kümelerini Nasıl Ele Alırsınız?

GridView binlerce satır ile bağlı olduğunda, dışa aktarmayı hızlı ve bellek verimli tutmanın çeşitli teknikleri vardır:

Sayfalama ve Sunucu Tarafı DataTable

GridView'de yalnızca görünen sayfayı dışa aktarmayın. Veri kaynağınızdan tam veri setini DataTable içine çağırmadan önce WorkBook.LoadWorkSheetsFromDataSet çağrısının içine alın. IronXL, tüm çalışma kitabını birden çok kez belleğe yüklemeden tek geçişte satırları yazar ve bu da onları on binlerce satır için uygun hale getirir.

Birden Fazla Çalışma Sayfası Ekleme

Ayrı sekmelere sahip bir çalışma kitabı üretmek için DataSet içinde birden fazla DataTable nesnesi içerebilirsiniz:

DataSet exportSet = new DataSet();
exportSet.Tables.Add(GetEmployeeData());    // Sheet 1
exportSet.Tables.Add(GetDepartmentData());  // Sheet 2
exportSet.Tables.Add(GetSalaryReport());    // Sheet 3

WorkBook workbook = WorkBook.Create();
WorkBook.LoadWorkSheetsFromDataSet(exportSet, workbook);

Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=MultiSheetReport.xlsx");
workbook.SaveAsStream(Response.OutputStream, IronXL.Enum.FileFormat.Xlsx);
Response.Flush();
Response.End();
DataSet exportSet = new DataSet();
exportSet.Tables.Add(GetEmployeeData());    // Sheet 1
exportSet.Tables.Add(GetDepartmentData());  // Sheet 2
exportSet.Tables.Add(GetSalaryReport());    // Sheet 3

WorkBook workbook = WorkBook.Create();
WorkBook.LoadWorkSheetsFromDataSet(exportSet, workbook);

Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=MultiSheetReport.xlsx");
workbook.SaveAsStream(Response.OutputStream, IronXL.Enum.FileFormat.Xlsx);
Response.Flush();
Response.End();
Imports System.Data
Imports IronXL

Dim exportSet As New DataSet()
exportSet.Tables.Add(GetEmployeeData()) ' Sheet 1
exportSet.Tables.Add(GetDepartmentData()) ' Sheet 2
exportSet.Tables.Add(GetSalaryReport()) ' Sheet 3

Dim workbook As WorkBook = WorkBook.Create()
WorkBook.LoadWorkSheetsFromDataSet(exportSet, workbook)

Response.Clear()
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("content-disposition", "attachment;filename=MultiSheetReport.xlsx")
workbook.SaveAsStream(Response.OutputStream, IronXL.Enum.FileFormat.Xlsx)
Response.Flush()
Response.End()
$vbLabelText   $csharpLabel

Her DataTable.TableName, Excel'deki çalışma sayfası sekme adı haline gelir. Bu desen, yönetim raporları için çeşitli görünümlerde ilişkili verileri birleştirmek için iyi çalışır.

İlgili rehberler:

IronXL Kullanmanın GridView Dışı Aktarım için Temel Faydaları Nelerdir?

IronXL'i GridView verilerini dışa aktarmak için kullanmak, geleneksel HTML sarmalama yaklaşımlarına göre net avantajlar sunar:

  • Gerçek Excel dosyaları -- kullanıcı uyarıları veya hata mesajları olmadan açılan geçerli .xlsx formatını oluşturur
  • Office kurulumu gerektirmez -- herhangi bir web sunucusunda Microsoft Excel veya Office interop gerektirmeden çalışır
  • VerifyRenderingInServerForm geçersiz kılma yok -- geleneksel kodu karmaşıklıktan arındıran ön kod geçici çözümünü ortadan kaldırır
  • Tam biçimlendirme kontrolü -- hücreleri stilize et, sayı formatları uygula, pencereleri dondur, ve programatik profesyonel çalışma sayfaları oluştur
  • Multi-sheet desteği -- ilişkili veri setlerini tek bir çalışma kitabında ayrı sekmeler olarak dışa aktar
  • Çapraz platform uyumluluğu -- Docker kapsayıcıları ve Azure App Service dahil, Windows ve Linux sunucularında doğru şekilde çalışır

Kütüphane, NuGet üzerinde mevcuttur ve .NET 10 dahil olmak üzere tüm modern .NET hedeflerini destekler. Ayrıca, CSV ve ODS gibi diğer formatları okuma ve yazma destekler ve böylece uygulamanızdaki tüm elektronik tablo ihtiyaçlarınız için tek bir bağımlılık oluşturur.

Diğer Excel kütüphaneleriyle yan yana karşılaştırma için IronXL ve ClosedXML ve IronXL özellik genel bakışına bakın.

Sonraki Adımlarınız Neler?

Artık eski HtmlTextWriter GridView dışa aktarmayı temiz, uyarısız bir IronXL uygulamasıyla değiştirmek için ihtiyacınız olan her şeye sahipsiniz. İlerlemek için işte nasıl yapılır:

Sıkça Sorulan Sorular

GridView verilerini Excel'e dışa aktarmak için neden IronXL kullanmalıyım?

IronXL, ASP.NET C# dilinde GridView'den oluşturulan gerçek XLSX dosyaları oluşturmanızı sağlar ve HtmlTextWriter ve StringWriter ile ilişkili yaygın tarayıcı uyarıları ve formatlama hataları gibi sorunları önler.

Excel'e aktarma için HtmlTextWriter kullanmanın sınırlamaları nelerdir?

HtmlTextWriter sıklıkla sahte Excel dosyaları üretir ve bu da tarayıcı uyarılarına ve formatlama sorunlarına yol açar. IronXL, bu sorunları gerçek Excel dosyaları üreterek çözer.

IronXL, GridView'den veri aktarma sürecini nasıl geliştirir?

IronXL, geliştiricilerin ASP.NET uygulamalarından doğrudan düzgün biçimlendirilmiş Excel dosyaları oluşturmalarına olanak tanıyarak GridView'den veri dışa aktarımını basitleştirir, HTML bazlı geçici çözümlere olan ihtiyacı ortadan kaldırır.

IronXL, dışa aktarılan Excel dosyaları için hangi dosya formatını kullanır?

IronXL, verileri gerçek XLSX dosyalarına aktarır ve Excel'de açıldığında uyumluluğu ve doğru formatlamayı garanti eder.

IronXL, Excel'e aktarımda formatlama sorunlarıyla ilgili yardımcı olabilir mi?

Evet, IronXL gerçek Excel dosyaları oluşturarak formatlama sorunlarını ortadan kaldırır, bu da verilerin doğru bir şekilde görünmesini sağlar ve tarayıcı uyarılarını tetiklemez.

IronXL ile GridView verilerini dışa aktarma için kod örneği var mı?

Evet, eğitimde IronXL kullanarak GridView verilerini etkin ve verimli bir şekilde Excel'e dışa aktarmayı gösteren kod örnekleri bulunmaktadır.

IronXL, GridView'den büyük veri kümelerini dışa aktarma konusunda destekli mi?

IronXL büyük veri kümelerini yönetmek üzere tasarlandığından, GridView'dan Excel'e kapsamlı veri dışa aktarma işlemleri için uygundur.

Excel dışa aktarma için IronXL'in geleneksel yöntemlere göre sunduğu avantajlar nelerdir?

IronXL, tarayıcı uyarılarını ortadan kaldıran, doğru dosya biçimlendirmesini sağlayan ve GridView verilerini dışa aktarma için basit kod uygulaması sunan daha güvenilir ve verimli bir çözüm 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ı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara