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 kullandığınızda sadece birkaç satır C# kodu gerektirir. Bir WorkBook oluşturun, gridin sütunları ve satırları arasında gezin, her hücre değerini çalışma sayfasına yazın, ardından tamamen biçimlendirilmiş bir .xlsx dosyası üretmek için SaveAs çağırın -- Microsoft Office kurulumu gerekmez.

Excel Dışa Aktarımı için Windows Forms Projesi Nasıl Kurulmalıdır?

Windows Forms, masaüstü uygulamaları oluşturmak için yaygın olarak kullanılan .NET ekosisteminde bir temel GUI kutuphanesidir. DataGridView kontrolü, en çok kullanılan bileşenlerinden biridir: bir DataTable, bir veritabanı sorgu sonucu veya bir bellek içi listesi gibi herhangi bağlanabilir bir kaynaktan gelen tablo verilerini görüntüler, düzenler ve yönetir.

Izgara verilerini Excel'e dışa aktarma, raporları paydaşlara gönderme, denetim için anlık görüntüleri arşivleme veya veri akışını akış analitik araçlarına beslemeye yönelik günlük ihtiyaçlara hizmet eder. İki geleneksel yaklaşım Microsoft Office Interop ve üçüncü taraf kutuphanelerdir. Interop, uygulamayı çalıştıran her makinede kurulu bir Excel kopyası gerektirir, COM nesne yaşam döngüsü sorunları oluşturur ve sunucu veya bulut dağıtımlarında zayıf performans gösterir. IronXL, ClosedXML ve Syncfusion gibi kutuphaneler bu sorunları, Office bağımlılığı olmadan doğrudan Open XML dosya formatına yazarak önler.

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

Önkoşullar

Herhangi bir dışa aktarma kodu yazmadan önce, şu unsurların yerinde olduğundan emin olun:

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

IronXL Nasıl Kurulur?

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

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

Alternatif olarak, Solution Explorer'da projeye sağ tıklayın, Manage NuGet Packages seçeneğini seçin, IronXl.Excel aratın ve Install tuşuna tıklayın.

Verileri DataGridView'den IronXL Kullanarak VB .NET 2010'da Excel'e Aktarın: Görsel 1 - Kurulum

Yüklendikten sonra, Excel işlevselliği kullanılan herhangi bir dosyanın en üstüne IronXL using direktifini ekleyin:

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

IronXL, her yaygın hesap tablosu formatını destekler: XLSX, XLS, CSV ve TSV. Bu kılavuz boyunca, modern Excel sürümleri için varsayılan format olan XLSX kullanılmaktadır.

Örnek Verilerle DataGridView Nasıl Doldurulur?

Bu yürüyüş için, formda DataGridView adında bir DataGridView1 ve btnExport adında bir buton bulunmaktadır. Grid, formun Load olayında bir DataTable'da depolanan çalışan kayıtları ile 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 formatlamanın daha sonra doğru şekilde çalışması için belirli bir .NET türü ile tanımlanmıştır. DataSource özelliği DataTable'i doğrudan DataGridView ile bağlar ve form açıldığında grid otomatik olarak tüm satırları render eder. Üretimde, bu veriler genellikle sert kodlanmış değerler yerine bir veritabanı sorgusundan, bir ORM sonuç kümesinden veya bir REST API yanıtından gelir.

Verileri DataGridView'den IronXL Kullanarak VB .NET 2010'da Excel'e Aktarın: Görsel 2 - DataGridView Çıktısı

DataGridView Veri Modelini Anlama

Bir DataGridView içeriğini iki koleksiyon aracılığıyla sunar: Columns (HeaderText ve sütun indeksi gibi metaveri için) ve Rows (gerçek veri hücreleri için). Her DataGridViewRow, sütun konumuna göre dizinlenmiş bir Cells koleksiyonu içerir. Her hücrenin Value özelliği, Excel hücresine yazılmadan önce dönüştürmeniz veya cast etmeniz gereken kutulanmış bir nesne döndürür. Bu hiyerarşiyi anlamak, güvenilir bir dışa aktarma döngüsü yazmak için çok önemlidir.

Sahnelerin arkasında DataTable yazılı değerleri depolar, bu nedenle ondalık maaş, bir IronXL çalışma sayfasına yazılmadan önce string dönüştürmeye ihtiyaç duymaz. IronXL'nin SetCellValue metodu string, double, decimal, int, bool ve DateTime overloadlarını kabul eder, bu da çıktı dosyasında orijinal veri türünü korumanıza olanak tanır.

Sütun Başlıkları ile Excel Dosyasına DataGridView Verileri Nasıl Dışa Aktarılır?

Dışa aktarma mantığı, butonun 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 ve 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 bellekte, tüm Excel dosyasını temsil eder. DefaultWorkSheet, açıkça yaratmanıza gerek kalmadan ilk sayfayı döndürür. Dış döngü, HeaderText'den satır sıfıra başlık metni yazar. İç içe döngü, her veri satırını yineleyerek, hücre değerini bir dizeye dönüştürmeden önce null olup olmadığını kontrol eder. row + 1 offset, verileri başlık satırının altına kaydırır. SaveAs, tamamlanmış çalışma kitabını belirtilen yola bir Open XML XLSX dosyası olarak yazar.

Verileri DataGridView'den IronXL Kullanarak VB .NET 2010'da Excel'e Aktarın: Görsel 3 - Excel Çıktısı

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

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

Basit bir veri dökümü işlevsel olsa da sunum için hazır değildir. IronXL'nin stil API'si, kaydetmeden önce herhangi bir hücre aralığı için kalın fontlar, arka plan renkleri, metin renkleri ve sayı formatları uygulamanıza izin verir:

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 metodu, 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 formatları uygular. Sayısal sütunlar için değeri bir decimal olarak yazmak, veri türünü sabit tutar, bu da Excel'in $#,##0 gibi sayı formatlarını doğru şekilde uygulayabileceği anlamına gelir. Dize olarak depolanan hücreler, sayı formatı kodlarına yanıt vermez.

Verileri DataGridView'den IronXL Kullanarak VB .NET 2010'da Excel'e Aktarın: Görsel 4 - Biçimlendirilmiş Excel Çıktısı

IronXL stil dokümantasyonunua danışarak bu deseni değişken satır gölgeleri, sütun genişliği otomatik uyarlaması veya pano dondurma uygulamak için genişletebilirsiniz.

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

Bazı iş akışları, eski sistemlerle veya hafif veri hatlarıyla uyumluluk için CSV çıktısı gerektirir. IronXL, ana koda ek bir yapılandırma değişikliği gerektirmeden CSV dışa aktarması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 ihracatından yapılan tek değişiklik, SaveAs'e geçirilen dosya uzantısıdır. IronXL, uzantıyı algılar ve çalışma kitabını doğru formatta otomatik olarak serileştirir. Bu tutarlılık, veri yazma mantığınızın çıktı formatından bağımsız olarak aynı kalmasını sağlar -- her format için ayrı kod yolları gerektiren kütüphanelerle kıyaslandığında önemli bir avantajdır.

CSV dışa aktarma, aşağı akış tüketicisi bir Python pandas scripti, bir veritabanı toplu aktarma aracı veya ikili XLSX dosyalarını okuyamayan bir analitik platform olduğunda özellikle faydalıdır.

Büyük DataGridView Veri Kümelerini Etkili Şekilde Nasıl Ele Alırsınız?

On binlerce satır içeren tablolar için performans önemli bir konu haline gelir. Aşağıdaki desen, verinin tamamını tek geçişte oluşturarak bellek yükü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 Ofis gerekti Tür korunumu
Microsoft.Office.Interop.Excel Yaklaşık ~65 bin'e kadar (yavaş) Evet Kısmi
IronXL (dize hücreler) 1M+ satırlar Hayır Hayır (tüm metin)
IronXL (tipli hücreler) 1M+ satırlar Hayır Evet
IronXL'den DataTable 1M+ satırlar Hayır Evet (otomatik)

DataGridView bir DataTable ile bağlı olduğunda, tabloyu hücre hücre yineleme yapmadan WorkSheet.LoadDataTable metodunu kullanarak doğrudan IronXL'ye yükleyebilirsiniz. Bu yaklaşım daha hızlıdır ve tüm sütun türlerini otomatik olarak korur.

DataTable ile desteklenmeyen gridler için daha önce gösterilen hücre-hücre deseni standart yaklaşım olmaya devam eder. UI'nin büyük ihracatlar sırasında yanıt vermesi için asenkron olarak dışa aktarmanız gerekirse, dışa aktarma mantığını bir Task.Run çağrısına sarın ve sonucu arka plan iş parçacığında await. Sonuçları UI iş parçacığına geri yönlendirmek için örüntüler hakkında asenkron dosya işlemleri dokümantasyonuna bakın.

VeriGridView Dışa Aktarımı için IronXL Neden Office Interop'tan Daha İyi?

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

  • Uygulamayı çalıştıran her makinede Microsoft Excel'un lisanslı bir kopyasının yüklü olması gerekir
  • Sunucu ortamları ve bulut konteynerları genellikle Office yükleyemezler
  • COM Interop, bellek sızıntıları ve zombi Excel süreçlerinden kaçınmak için her nesnenin açık bir şekilde serbest bırakılmasını gerektirir
  • COM sınırı boyunca hata yönetimi detaylı ve hassastır
  • Satır sayısı arttıkça performans hızla düşer

IronXL, herhangi bir harici işlemi başlatmadan OOXML dosya formatına doğrudan yazar. Uygulamalar kendi kendine yeterli birimler olarak dağıtılır. Kütüphanenin API'si tamamen yönetilen .NET'tir, bu nedenle çöp toplama, bellek yönetimini Marshal.ReleaseComObject çağrıları olmadan otomatik olarak halleder. Hiçbir süreçler arası iletişim gerçekleşmediği için hız önemli ölçüde daha yüksektir.

Alternatifleri değerlendiren takımlar için ClosedXML popüler bir açık kaynak seçeneğidir. IronXL, PDF dönüşümü, grafik oluşturma ve ticari destek gibi daha geniş bir özellik seti sunar, bu da kurumsal tedarik kararlarında etkili olabilir. IronXL lisanslama seçeneklerini gözden geçirerek takım büyüklüğünüze ve dağıtım senaryonuza uygun doğru katmanı eşleştirin.

Özellik karşılaştırması: IronXL vs Office Interop
Özellik IronXL Office Interop
Office kurulumu gereklidir Hayır Evet
Sunucu / bulut dağıtımı Evet Hayır (desteklenmez)
Yönetilen bellek modeli Evet Hayır (COM temizliği gereklidir)
XLSX / CSV / XLS formatları Üçü de Yüklenen Excel'e bağlı
E-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, grafik oluşturma ve koşullu biçimlendirme uygulama gibi burada gösterilen DataGridView dışa aktarma modelinden doğal olarak genişleyen tüm yetenekleri kapsamaktadır.

Sıradaki Adımlarınız Neler?

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

  • Hata yönetimi ekle: Dışa aktarma kodunu bir try/catch bloğuna sarın ve dosya kilitli veya yol geçersiz ise kullanıcı dostu bir mesaj gösterin
  • Dosya yolu seçimini destekle: Kullanıcıların çalışma zamanı sırasında çıktı konumunu ve dosya adını seçmesine izin vermek için SaveFileDialog kullanın
  • Gerçek veri yükle: Örnek DataTable'yı ADO.NET veya Entity Framework kullanarak bir veritabanı sorgusu ile değiştirin
  • Mevcut dosyaları okuyun: Her zaman yeni bir doğrudan yerine mevcut bir e-tabloyu açmak ve güncellemek için WorkBook.Load kullanın
  • Birden fazla sayfaya dışa aktar: İlgili veri setlerini düzenlemek için aynı WorkBook içinde ek WorkSheet nesneleri oluşturun
  • Koşullu biçimlendirme uygulayın: IronXL'nin koşullu biçimlendirme API'sini kullanarak eşikleri aşan hücreleri vurgulayın
  • Lisans seçeneklerini gözden geçirin: ücretsiz bir deneme mevcuttur; lisans katmanları, bireysel geliştiricilerden kurumsal dağıtımlara kadar kapsama alanı sunar
  • Tam API referansına göz atın: IronXL nesne referansı mevcut her sınıfı ve yöntemi dokümante eder

Sıkça Sorulan Sorular

C# ile DataGridView verilerini Excel'e aktarmanın en kolay yolu nedir?

IronXL kullanarak, DataGridView verilerini C# ile Excel'e aktarmak için bir WorkBook nesnesine sütun başlıkları ve veri satırları yazan kısa bir döngü kullanabilir, ardından XLSX dosyası oluşturmak için SaveAs'i çağırabilirsiniz. Microsoft Office kurulumu gerektirmez.

IronXL'ü C# Windows Forms uygulamasında Excel dosyalarını işlemek için nasıl kullanırsınız?

IronXL'u NuGet üzerinden yükleyin, using IronXL yönergesini ekleyin, WorkBook.Create() ile bir WorkBook oluşturun, SetCellValue kullanarak verileri yazın ve SaveAs ile kaydedin. IronXL, XLSX, XLS ve CSV formatlarını destekler.

IronXL, büyük DataGridView veri kümelerini Excel'e aktarmayı destekliyor mu?

Evet, IronXL büyük veri kümeleriyle verimli şekilde çalışır. Bir DataTable tarafından desteklenen DataGridView'ler için, performansı daha da arttırmak için hücre hücre iterasyonunu atlayan LoadDataTable yöntemini kullanabilirsiniz.

IronXL kullanmak için Microsoft Excel'e ihtiyaçınız var mı?

Hayır. IronXL, Excel veya herhangi bir COM otomasyonu başlatmadan doğrudan Open XML dosya formatına yazar. IronXL ile oluşturulan uygulamalar Office'in mevcut olmadığı sunuculara ve bulut ortamlarına dağıtılır.

IronXL ile Excel aktarımlarında Office Interop'a göre ne gibi avantajlar vardır?

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ını okumak ve yazmak için kapsamlı bir .NET API sağlar.

IronXL, DataGridView verilerini CSV olarak da XLSX olarak da aktarabilir mi?

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

IronXL ile aktarılan Excel hücrelerine formatlamayı nasıl uyguluyorsunuz?

Bir hücre aralığı seçmek için WorkSheet.GetRange kullanın, sonra Font.Bold, SetBackgroundColor, Font.SetColor ve sayı formatları için FormatString ayarlamak için Style özelliğine erişin.

C# projesinde IronXL kullanmaya nasıl başlıyorsunuz?

Projenizde Install-Package IronXL veya dotnet add package IronXL komutunu çalıştırın, dosyanızın üstüne using IronXL ekleyin ve ironsoftware.com/csharp/excel adresindeki IronXL belgesindeki örnekleri takip edin.

Jordi Bardia
Yazılım Mühendisi
Jordi Python, C# ve C++ konularında en yetkin, Iron Software'deki yeteneklerini kullanmadığı zamanlarda; oyun programlıyor. Ürün testi, ürün geliştirme ve araştırma sorumluluklarını paylaşan Jordi, sürekli ürün gelişimine büyük değer katıyor. Çeşitli deneyimleri onu ...
Daha Fazlasını Oku

Iron Destek Ekibi

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