Altbilgi içeriğine atla
IRONXL KULLANARAK

IronXL ile C#'da DataGridView'i Excel'e nasıl aktaracağınızı öğrenin.

Bir DataGridView'den Excel dosyasına veri aktarmak, IronXL kullanırken sadece birkaç satır C# kodu gerektirir. Bir WorkBook oluşturun, gridin sütunları ve satırları üzerinde yineleme yapın, her hücre değerini çalışma sayfasına yazın ve tam biçimlendirilmiş bir .xlsx dosyası üretmek için SaveAs çağırın -- Microsoft Office yüklemesi gerekmez.

Excel İhracatı için Windows Forms Projesi Nasıl Kurulur?

Windows Forms, masaüstü uygulamalar geliştirmek için yaygın olarak kullanılan .NET ekosisteminde temel bir GUI kütüphanesidir. En çok kullanılan bileşenlerinden biri olan DataGridView kontrolü, herhangi bir bağlanabilir kaynaktan (örneğin, DataTable, bir veritabanı sorgu sonucu veya bellekteki bir liste) gelen tabloları gösterir, düzenler ve yönetir.

Bu ızgaradaki verileri Excel'e aktarmak, paydaşlara rapor göndermek, denetim için anlık görüntüleri arşivlemek veya veri akışını analiz araçlarına beslemek gibi günlük ihtiyaçlara hizmet eder. İki geleneksel yaklaşım, Microsoft Ofis Interop ve üçüncü taraf kütüphanelerdir. Interop, uygulamayı çalıştıran her makinede bir Excel kopyası gerektirir, COM nesne yaşam döngüsü sorunları yaratır ve sunucu veya bulut dağıtımlarında kötü performans sergiler. IronXL, ClosedXML ve Syncfusion gibi kütüphaneler, Office bağımlılığı olmadan doğrudan Open XML dosya formatına yazarak bu sorunlardan kaçar.

Bu kılavuz, .NET 10'u hedefleyen C#'ta IronXL yaklaşımını gösterir, ancak IronXL .NET Framework 4.6.2 ve tüm modern .NET sürümlerini destekler.

Ön Koşullar

Herhangi bir ihracat kodu yazmadan önce, aşağıdakilerin sağlandığından emin olun:

  • Visual Studio 2022 veya daha yenisi
  • .NET 10 SDK yüklü
  • DataGridView kontrolü içeren bir Windows Forms Uygulama projesi
  • IronXL yüklemek için NuGet erişimi

IronXL Nasıl Kurulur?

Visual Studio'da Paket Yöneticisi Konsolunu açın ve birini çalıştırın:

Install-Package IronXL.Excel

Alternatif olarak, Solution Explorer'da projeye sağ tıklayın, Manage NuGet Packages seçeneğini seçin, IronXL.Excel için arama yapın ve Install seçeneğine tıklayın.

IronXL Kullanarak VB .NET 2010'da DataGridView'den Excel'e Veri Aktarımı: Resim 1 - Kurulum

Kurulumdan sonra, Excel işlevselliğini kullanan herhangi bir dosyanın üst kısmına IronXL kullanma yönergelerini ekleyin:

using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
$vbLabelText   $csharpLabel

IronXL, her ortak elektronik tablo formatını destekler: XLSX, XLS, CSV ve TSV. Bu kılavuz, modern Excel sürümleri için varsayılan format olduğu için XLSX'i kullanmaktadır.

Örnek Veri ile DataGridView Nasıl Doldurulur?

Bu yürüme turu için, form, DataGridView1 adlı bir DataGridView ve btnExport adlı bir düğme içerir. Grid, formun Load olayında, bir DataTable'da saklanan çalışan kayıtlarıyla doldurulur:

void Form1_Load(object sender, EventArgs e)
{
    var dt = new DataTable();

    // Define columns with the appropriate .NET type
    dt.Columns.Add("EmployeeID", typeof(int));
    dt.Columns.Add("Name", typeof(string));
    dt.Columns.Add("Department", typeof(string));
    dt.Columns.Add("Salary", typeof(decimal));

    // Add sample rows
    dt.Rows.Add(101, "Sarah Johnson", "Engineering", 85000m);
    dt.Rows.Add(102, "Michael Chen", "Marketing", 72000m);
    dt.Rows.Add(103, "Emily Davis", "Finance", 91000m);
    dt.Rows.Add(104, "James Wilson", "Engineering", 78000m);

    DataGridView1.DataSource = dt;
}
void Form1_Load(object sender, EventArgs e)
{
    var dt = new DataTable();

    // Define columns with the appropriate .NET type
    dt.Columns.Add("EmployeeID", typeof(int));
    dt.Columns.Add("Name", typeof(string));
    dt.Columns.Add("Department", typeof(string));
    dt.Columns.Add("Salary", typeof(decimal));

    // Add sample rows
    dt.Rows.Add(101, "Sarah Johnson", "Engineering", 85000m);
    dt.Rows.Add(102, "Michael Chen", "Marketing", 72000m);
    dt.Rows.Add(103, "Emily Davis", "Finance", 91000m);
    dt.Rows.Add(104, "James Wilson", "Engineering", 78000m);

    DataGridView1.DataSource = dt;
}
Option Strict On



Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim dt As New DataTable()

    ' Define columns with the appropriate .NET type
    dt.Columns.Add("EmployeeID", GetType(Integer))
    dt.Columns.Add("Name", GetType(String))
    dt.Columns.Add("Department", GetType(String))
    dt.Columns.Add("Salary", GetType(Decimal))

    ' Add sample rows
    dt.Rows.Add(101, "Sarah Johnson", "Engineering", 85000D)
    dt.Rows.Add(102, "Michael Chen", "Marketing", 72000D)
    dt.Rows.Add(103, "Emily Davis", "Finance", 91000D)
    dt.Rows.Add(104, "James Wilson", "Engineering", 78000D)

    DataGridView1.DataSource = dt
End Sub
$vbLabelText   $csharpLabel

Her sütun, sayısal karşılaştırmaların ve biçimlendirmelerin daha sonra doğru çalışmasını sağlamak için belirli bir .NET türü ile tanımlanır. DataSource özelliği, DataTable'yu doğrudan DataGridView'ya bağlar ve form açıldığında grid otomatik olarak tüm satırları görüntüler. Üretimde, bu veriler tipik olarak bir veritabanı sorgusundan, bir ORM sonuç setinden veya sabit kodlanmış değerler yerine bir REST API yanıtından gelecektir.

IronXL Kullanarak VB .NET 2010'da DataGridView'den Excel'e Veri Aktarımı: Resim 2 - DataGridView Çıkışı

DataGridView Veri Modelini Anlamak

Bir DataGridView içeriğini iki koleksiyon aracılığıyla sunar: Columns (metaveriler için HeaderText ve sütun indeksi gibi) ve Rows (gerçek veri hücreleri için). Her DataGridViewRow, sütun konumuna göre dizinlenen bir Cells koleksiyonu içerir. Her hücrenin Value özelliği, bir Excel hücresine yazmadan önce onu kastetmeniz veya dönüştürmeniz gereken kutulanmış bir nesneyi döndüren bir fonksiyon içerir. Bu hiyerarşiyi anlamak, güvenilir bir dışa aktarma döngüsü yazmak için esastır.

Perde arkasında DataTable türlendirilmiş değerleri depolar, bu nedenle ondalık bir maaş, IronXL çalışma sayfasına yazılmadan önce metin dönüşümüne ihtiyaç duymaz. IronXL'in SetCellValue yöntemi, çıktı dosyasında orijinal veri türünü korumanıza olanak tanıyan string, double, decimal, int, bool ve DateTime yüklerini kabul eder.

VeriGridView Verilerini Sütun Başlıkları ile Bir Excel Dosyasına Nasıl Aktarırsınız?

Dışa aktarma mantığı, düğmenin tıklama işleyicisinde yer alır. Kod, yeni bir WorkBook oluşturur, varsayılan çalışma sayfasını alır, sütun başlıklarını ilk satıra yazar, ardından her veri satırını bunların altına yazar:

void btnExport_Click(object sender, EventArgs e)
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    // Write column headers to row index 0
    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    // Write data rows starting at row index 1
    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
            if (cellValue is not null)
            {
                sheet.SetCellValue(row + 1, col, cellValue.ToString()!);
            }
        }
    }

    string outputPath = "EmployeeData.xlsx";
    workbook.SaveAs(outputPath);
    MessageBox.Show("Export complete. File saved to: " + outputPath, "Success");
}
void btnExport_Click(object sender, EventArgs e)
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    // Write column headers to row index 0
    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    // Write data rows starting at row index 1
    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
            if (cellValue is not null)
            {
                sheet.SetCellValue(row + 1, col, cellValue.ToString()!);
            }
        }
    }

    string outputPath = "EmployeeData.xlsx";
    workbook.SaveAs(outputPath);
    MessageBox.Show("Export complete. File saved to: " + outputPath, "Success");
}
Private Sub btnExport_Click(sender As Object, e As EventArgs)
    Dim workbook = WorkBook.Create()
    Dim sheet = workbook.DefaultWorkSheet

    ' Write column headers to row index 0
    For col As Integer = 0 To DataGridView1.Columns.Count - 1
        sheet.SetCellValue(0, col, DataGridView1.Columns(col).HeaderText)
    Next

    ' Write data rows starting at row index 1
    For row As Integer = 0 To DataGridView1.Rows.Count - 1
        For col As Integer = 0 To DataGridView1.Columns.Count - 1
            Dim cellValue As Object = DataGridView1.Rows(row).Cells(col).Value
            If cellValue IsNot Nothing Then
                sheet.SetCellValue(row + 1, col, cellValue.ToString())
            End If
        Next
    Next

    Dim outputPath As String = "EmployeeData.xlsx"
    workbook.SaveAs(outputPath)
    MessageBox.Show("Export complete. File saved to: " & outputPath, "Success")
End Sub
$vbLabelText   $csharpLabel

WorkBook nesnesi, bellekteki tüm Excel dosyasını temsil eder. DefaultWorkSheet, açıkça bir tane oluşturmanıza gerek kalmadan ilk sayfayı döndürür. Dış döngü, HeaderText'dan gelen başlık metnini sıfır satırına yazar. İç içe geçmiş döngü daha sonra her veri satırını ilerler ve dev.null olmadan önce hücre değerini bir diziye dönüştürür. row + 1 kayması, verileri başlık satırının altına taşır. SaveAs, tamamlanmış çalışma kitabını belirtilen yola bir Open XML XLSX dosyası olarak yazar.

IronXL Kullanarak VB .NET 2010'da DataGridView'den Excel'e Veri Aktarımı: Resim 3 - Excel Çıkışı

Ortaya çıkan dosya, Excel, Google Sheets veya XLSX formatını okuyan herhangi bir uygulamada açılabilir. Sütun başlıkları ilk satırda görünür ve tüm veri satırları DataGridView'da göründükleri aynı sırayla takip eder.

Dışa Aktarılan Excel Dosyasına Hücre Formatlama Nasıl Uygulanır?

Düz veri transferi işlevsel olabilir ancak sunum için hazır değildir. IronXL'in stil API'si, sayı formatları, arkaplan renkleri, yazı tipi kalınlığı ve metin renklerini herhangi bir hücre aralığına uygulamanıza olanak tanır:

void ExportWithFormatting()
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    // Write column headers
    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    // Style the header row: bold white text on blue background
    var headerRange = sheet.GetRange("A1:D1");
    headerRange.Style.Font.Bold = true;
    headerRange.Style.SetBackgroundColor("#4472C4");
    headerRange.Style.Font.SetColor("#FFFFFF");

    // Locate the Salary column index
    int salaryColIndex = -1;
    for (int i = 0; i < DataGridView1.Columns.Count; i++)
    {
        if (string.Equals(DataGridView1.Columns[i].HeaderText, "Salary",
            StringComparison.OrdinalIgnoreCase))
        {
            salaryColIndex = i;
            break;
        }
    }

    // Write data rows, preserving numeric types
    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        if (DataGridView1.Rows[row].IsNewRow) continue;

        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
            if (cellValue is null) continue;

            int targetRow = row + 1;

            if (col == salaryColIndex)
            {
                // Write salary as a true numeric decimal
                if (decimal.TryParse(cellValue.ToString(),
                    System.Globalization.NumberStyles.Number,
                    System.Globalization.CultureInfo.InvariantCulture,
                    out decimal decValue))
                {
                    sheet.SetCellValue(targetRow, col, decValue);
                }
                else
                {
                    sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
                }
            }
            else
            {
                sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
            }
        }
    }

    // Apply currency format to the salary column data range
    var salaryRange = sheet.GetRange("D2:D5");
    salaryRange.FormatString = "$#,##0";

    workbook.SaveAs("FormattedEmployeeData.xlsx");
}
void ExportWithFormatting()
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    // Write column headers
    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    // Style the header row: bold white text on blue background
    var headerRange = sheet.GetRange("A1:D1");
    headerRange.Style.Font.Bold = true;
    headerRange.Style.SetBackgroundColor("#4472C4");
    headerRange.Style.Font.SetColor("#FFFFFF");

    // Locate the Salary column index
    int salaryColIndex = -1;
    for (int i = 0; i < DataGridView1.Columns.Count; i++)
    {
        if (string.Equals(DataGridView1.Columns[i].HeaderText, "Salary",
            StringComparison.OrdinalIgnoreCase))
        {
            salaryColIndex = i;
            break;
        }
    }

    // Write data rows, preserving numeric types
    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        if (DataGridView1.Rows[row].IsNewRow) continue;

        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
            if (cellValue is null) continue;

            int targetRow = row + 1;

            if (col == salaryColIndex)
            {
                // Write salary as a true numeric decimal
                if (decimal.TryParse(cellValue.ToString(),
                    System.Globalization.NumberStyles.Number,
                    System.Globalization.CultureInfo.InvariantCulture,
                    out decimal decValue))
                {
                    sheet.SetCellValue(targetRow, col, decValue);
                }
                else
                {
                    sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
                }
            }
            else
            {
                sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
            }
        }
    }

    // Apply currency format to the salary column data range
    var salaryRange = sheet.GetRange("D2:D5");
    salaryRange.FormatString = "$#,##0";

    workbook.SaveAs("FormattedEmployeeData.xlsx");
}
Option Strict On



Sub ExportWithFormatting()
    Dim workbook = WorkBook.Create()
    Dim sheet = workbook.DefaultWorkSheet

    ' Write column headers
    For col As Integer = 0 To DataGridView1.Columns.Count - 1
        sheet.SetCellValue(0, col, DataGridView1.Columns(col).HeaderText)
    Next

    ' Style the header row: bold white text on blue background
    Dim headerRange = sheet.GetRange("A1:D1")
    headerRange.Style.Font.Bold = True
    headerRange.Style.SetBackgroundColor("#4472C4")
    headerRange.Style.Font.SetColor("#FFFFFF")

    ' Locate the Salary column index
    Dim salaryColIndex As Integer = -1
    For i As Integer = 0 To DataGridView1.Columns.Count - 1
        If String.Equals(DataGridView1.Columns(i).HeaderText, "Salary", StringComparison.OrdinalIgnoreCase) Then
            salaryColIndex = i
            Exit For
        End If
    Next

    ' Write data rows, preserving numeric types
    For row As Integer = 0 To DataGridView1.Rows.Count - 1
        If DataGridView1.Rows(row).IsNewRow Then Continue For

        For col As Integer = 0 To DataGridView1.Columns.Count - 1
            Dim cellValue As Object = DataGridView1.Rows(row).Cells(col).Value
            If cellValue Is Nothing Then Continue For

            Dim targetRow As Integer = row + 1

            If col = salaryColIndex Then
                ' Write salary as a true numeric decimal
                Dim decValue As Decimal
                If Decimal.TryParse(cellValue.ToString(), Globalization.NumberStyles.Number, Globalization.CultureInfo.InvariantCulture, decValue) Then
                    sheet.SetCellValue(targetRow, col, decValue)
                Else
                    sheet.SetCellValue(targetRow, col, cellValue.ToString())
                End If
            Else
                sheet.SetCellValue(targetRow, col, cellValue.ToString())
            End If
        Next
    Next

    ' Apply currency format to the salary column data range
    Dim salaryRange = sheet.GetRange("D2:D5")
    salaryRange.FormatString = "$#,##0"

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

GetRange yöntemi, bitişik bir hücre bloğunu seçmek için standart Excel notasyonunu (A1:D1) kabul eder. Style.Font.Bold, Style.SetBackgroundColor ve Style.Font.SetColor ayarlamak, seçilen aralıktaki her hücreye bu biçimleri uygular. Sayısal sütunlar için, değeri bir decimal olarak yazmak, veri türünü korur, bu da Excel'in $#,##0 gibi sayı biçimlendirmelerini doğru bir şekilde uygulayabilmesini sağlar. Dizi olarak depolanan hücreler sayısal format komutlarına yanıt vermez.

IronXL Kullanarak VB .NET 2010'da DataGridView'den Excel'e Veri Aktarımı: Resim 4 - Biçimlendirilmiş Excel Çıkışı

Bu kalıbı, satırların alternatif gölgelendirilmesini, sütun genişliği otomatik uyumunu veya pencere bölmesini dondurmayı uygulayacak şekilde genişletebilirsiniz. Daha fazla bilgi için IronXL biçimlendirme dökümantasyonuna bakın.

DataGridView Verilerini XLSX Yerine CSV Olarak Nasıl Aktarırsınız?

Bazı iş akışları, eski sistemlerle veya hafif veri boru hatlarıyla uyumluk için CSV çıktısını gerektirir. IronXL, ana koda ek bir yapılandırma değişikliği yapmadan CSV dışa aktarımını ele alır:

void ExportToCsv()
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        if (DataGridView1.Rows[row].IsNewRow) continue;

        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cell = DataGridView1.Rows[row].Cells[col].Value;
            if (cell is not null)
                sheet.SetCellValue(row + 1, col, cell.ToString()!);
        }
    }

    // Saving with a .csv extension produces a comma-separated file
    workbook.SaveAs("EmployeeData.csv");
}
void ExportToCsv()
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        if (DataGridView1.Rows[row].IsNewRow) continue;

        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cell = DataGridView1.Rows[row].Cells[col].Value;
            if (cell is not null)
                sheet.SetCellValue(row + 1, col, cell.ToString()!);
        }
    }

    // Saving with a .csv extension produces a comma-separated file
    workbook.SaveAs("EmployeeData.csv");
}
Sub ExportToCsv()
    Dim workbook = WorkBook.Create()
    Dim sheet = workbook.DefaultWorkSheet

    For col As Integer = 0 To DataGridView1.Columns.Count - 1
        sheet.SetCellValue(0, col, DataGridView1.Columns(col).HeaderText)
    Next

    For row As Integer = 0 To DataGridView1.Rows.Count - 1
        If DataGridView1.Rows(row).IsNewRow Then Continue For

        For col As Integer = 0 To DataGridView1.Columns.Count - 1
            Dim cell As Object = DataGridView1.Rows(row).Cells(col).Value
            If cell IsNot Nothing Then
                sheet.SetCellValue(row + 1, col, cell.ToString())
            End If
        Next
    Next

    ' Saving with a .csv extension produces a comma-separated file
    workbook.SaveAs("EmployeeData.csv")
End Sub
$vbLabelText   $csharpLabel

XLSX dışa aktarımından tek fark SaveAs'ya geçirilen dosya uzantısıdır. IronXL bu uzantıyı algılar ve kitabı doğru formatta otomatik olarak serileştirir. Bu tutarlılık, çıkış formatından bağımsız olarak veri yazma mantığınızın aynı kalmasını sağlar - her format için ayrı kod yolları gerektiren kütüphanelere göre önemli bir avantajdır.

CSV dışa aktarım, veri akışına dikkat etmeyen Python pandas scripti, veritabanı toplu aktarma aracı veya ikili XLSX dosyalarını okuyamayan bir analiz platformu gibi tüketiciler için özellikle kullanışlıdır.

Büyük DataGridView Verisetleri Verimli Bir Şekilde Nasıl Yönetilir?

On binlerce satır içeren ızgaralar için, performans bir dikkat noktası haline gelir. Aşağıdaki desen, tam veri kümesinin tek bir geçişte oluşturularak bellek sıkışıklığını azaltır:

Büyük veri setleri için IronXL dışa aktarma yöntemi karşılaştırması
Yaklaşım İşlenen Satırlar Office gerekli Tür koruma
Microsoft.Office.Interop.Excel ~65 bine kadar (yavaş) Evet Kısmi
IronXL (dize hücreleri) 1M+ satır Hayır Hayır (tüm metin)
IronXL (türlendirilmiş hücreler) 1M+ satır Hayır Evet
DataTable'dan IronXL 1M+ satır Hayır Evet (otomatik)

DataGridView bir DataTable'ya bağlı olduğunda, tabloyu hücre hücre yinelemeyi tamamen atlayarak WorkSheet.LoadDataTable yöntemi kullanarak doğrudan IronXL'e yükleyebilirsiniz. Bu yaklaşım daha hızlıdır ve tüm sütun türlerini otomatik olarak korur.

Bir DataTable tarafından desteklenmeyen gridler için, daha önce gösterilen hücre-hücre desen, standart yaklaşım olarak kalır. Büyük dışa aktarımlar sırasında UI'nin duyarlı kalmasını sağlamak için eşzamanlı olarak dışa aktarmanız gerekiyorsa, dışa aktarım mantığını Task.Run çağrısına sarın ve sonucu arka plan iş parçacığında await yoluyla çalıştırın. Sonuçları UI iş parçacığına geri aktarma kalıpları için asenkron dosya işlemleri belgelerini inceleyin.

DataGridView Dışa Aktarma İçin IronXL Neden Ofis Interop'tan Daha İyi?

Geleneksel .NET çözümleri, çalışan bir Excel sürecini sürdürmek için Microsoft.Office.Interop.Excel kullanırdı. Bu yaklaşım birkaç dağıtım ve güvenilirlik problemi yaratmaktadır:

  • Uygulamayı çalıştıran her makinede lisanslı bir Microsoft Excel kopyasının kurulu olması gereklidir
  • Sunucu ortamları ve bulut konteynerleri genellikle Office'i yükleyemez
  • COM Interop, her nesnenin açıkça serbest bırakılmasını gerektirir, aksi takdirde bellek sızıntıları ve zombi Excel işlemleri oluşabilir
  • COM sınırı boyunca hata yönetimi uzun ve kırılgandır
  • Satır sayısı arttıkça performans hızlı bir şekilde bozulur

IronXL, herhangi bir harici süreci başlatmadan doğrudan OOXML dosya formatına yazar. Uygulamalar bağımsız birimler olarak dağıtılır. Kütüphanenin API'si tamamen yönetilen .NET'tir, bu nedenle çöp toplama, Marshal.ReleaseComObject çağrılarına gerek kalmadan belleği otomatik olarak yönetir. Hız, herhangi bir süreçler arası iletişim olmadığından önemli ölçüde daha yüksektir.

Alternatifleri değerlendiren ekipler için ClosedXML popüler bir açık kaynak seçeneğidir. IronXL, PDF dönüştürme, çizelge oluşturma ve ticari destek gibi daha geniş bir özellik yelpazesi sunar, bu da kurumsal satın alma kararlarında etkili olabilir. Ekibinizin boyutuna ve dağıtım senaryonuza uygun IronXL lisans seçeneklerini inceleyin.

Özellik karşılaştırması: IronXL vs Ofis Interop
Özellik IronXL Ofis Interop
Ofis yüklemesi gereklidir Hayır Evet
Sunucu / bulut dağıtımı Evet Hayır (desteklenmiyor)
Yönetilen bellek modeli Evet Hayır (COM temizliği gereklidir)
XLSX / CSV / XLS formatları Üçünün de Kurulu Excel'e bağlı
Elektronik tablodan PDF dışa aktarma Evet Ek kütüphane gerektirir

IronXL eğitim bölümü mevcut Excel dosyalarını okuma, şablonları değiştirme, grafikler oluşturma ve koşullu biçimlendirme uygulama konularını kapsar, bu da burada gösterilen DataGridView dışa aktarma deseninden doğal olarak genişleyen tüm yeteneklerdir.

Sonraki Adımlarınız Neler?

Artık, IronXL kullanarak bir DataGridView'yi biçimlendirilmiş bir Excel dosyasına aktarmak için çalışan bir C# koduna sahipsiniz. Buradan itibaren, aşağıdaki yönleri düşünün:

  • Hata yönetimi ekleyin: Dışa aktarma kodunu bir try/catch bloğuna ekleyin ve dosya kilitliyse veya yol geçersizse kullanıcı dostu bir mesaj gösterin.
  • Dosya yolu seçimini destekleyin: Kullanıcılara çalışma zamanında çıktı konumunu ve dosya adını seçme izni vermek için SaveFileDialog kullanın.
  • Gerçek veriyi yükleyin: Örnek DataTable'yı veri tabanı sorgusuyla ADO.NET veya Entity Framework kullanarak değiştirin.
  • Mevcut dosyaları okuyun: Her zaman yeni bir dosya oluşturmak yerine mevcut bir elektronik tabloyu açmak ve güncellemek için WorkBook.Load kullanın
  • Çoklu sayfalara dışa aktarın: Aynı WorkBook içinde ilave WorkSheet nesneleri oluşturarak ilişkili veri kümelerini düzenleyin.
  • Koşullu biçimlendirme uygulayın: IronXL'nin koşullu biçimlendirme API'sini kullanarak eşik değerlerini aşan hücreleri vurgulayın
  • Lisans seçeneklerini gözden geçirin: Bir ücretsiz deneme mevcuttur; lisanslama katmanları bireysel geliştiricilerden kurumsal dağıtımlara kadar kapsamaktadır
  • Tüm API referansını gözden geçirin: IronXL nesne referansı mevcut olan her sınıf ve yöntemi belgeler

Sıkça Sorulan Sorular

C#'ta DataGridView verilerini Excel'e dışa aktarmanın en kolay yolu nedir?

IronXL kullanarak, DataGridView verilerini C#'ta kısa bir döngüyle Excel'e dışa aktarabilirsiniz; bu döngü sütun başlıklarını ve veri satırlarını bir WorkBook nesnesine yazar ve ardından bir XLSX dosyası üretmek için SaveAs'ı çağırır. Microsoft Office kurulumu gerekmez.

C# Windows Forms uygulamasında IronXL'i kullanarak Excel dosyalarını nasıl işlersiniz?

NuGet aracılığıyla IronXL yükleyin, using IronXL yönergesi ekleyin, WorkBook.Create() ile bir Çalışma Kitabı oluşturun, SetCellValue kullanarak veri yazın ve SaveAs ile kaydedin. IronXL, XLSX, XLS ve CSV formatlarını destekler.

IronXL, büyük DataGridView veri setlerini Excel'e dışa aktarmayı destekliyor mu?

Evet, IronXL, büyük veri setlerini etkili bir şekilde işler. Bir DataTable tarafından desteklenen DataGridViewler için hücre bazlı yinelemeyi atlamak ve performansı daha da artırmak için LoadDataTable yöntemini kullanabilirsiniz.

IronXL'i kullanmak için Microsoft Excel kurulu mu olmalı?

Hayır. IronXL, Open XML dosya formatına doğrudan yazar ve Excel veya herhangi bir COM otomasyonunu başlatmaz. IronXL ile oluşturulan uygulamalar, Office'in bulunmadığı sunucu ve bulut ortamlarına dağıtılır.

Excel dışa aktarımlarında IronXL kullanmanın Office Interop'a göre faydaları nelerdir?

IronXL, Office kurulumu gerektirmez, COM bellek sızıntısı sorunlarını önler, sunucu ve bulut dağıtımını destekler ve XLSX, XLS ve CSV dosyaları okuma ve yazma için temiz bir yönetilen .NET API sağlar.

IronXL, DataGridView verilerini CSV ve XLSX'e de dışa aktarabilir mi?

Evet. WorkBook.SaveAs'a bir .csv dosya yolu geçirildiğinde, virgülle ayrılmış bir dosya üretilir. Veri yazma kodu her iki format için de aynıdır - yalnızca dosya uzantısı değişir.

IronXL ile dışa aktarılan Excel hücrelerine nasıl biçimlendirme uygularsınız?

Bir hücre aralığını seçmek için WorkSheet.GetRange'ı kullanın, ardından Stil özelliğine erişerek Font.Bold, SetBackgroundColor, Font.SetColor ve sayı formatları için FormatString değerlerini ayarlayın.

C# projesinde IronXL kullanmaya nasıl başlarsınız?

Projenizde Install-Package IronXL veya dotnet add package IronXL çalıştırın, dosyanızın başında using IronXL ekleyin ve ironsoftware.com/csharp/excel/adresindeki IronXL belgelerindeki örnekleri izleyin.

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