IRONSOFTWAREHOME
IRONXL KULLANARAK

IronXL ile C# İçinde Excel'e SQL Verisi Dışa Aktarma

Curtis Chau
Curtis Chau
Updated: 28 Haziran 2026

SQL Server'dan Microsoft Excel'e veri dışa aktarmak, raporlama sistemleri, veri analiz araçları ve iş uygulamaları oluştururken .NET geliştiricileri için yaygın bir görevdir. Bu eğitim, SQL verilerini Excel'e, Microsoft Office kurulumu gerektirmeyen bir .NET Excel kütüphanesi olan IronXL kullanarak C# ile nasıl dışa aktaracağınızı gösterir.

Ücretsiz denemenizi başlatın ve aşağıdaki kod örnekleriyle birlikte uygulayın.

İlk Adım:
arrow pointer

SQL Veri Dışa Aktarımı için IronXL Nasıl Kurulur?

Herhangi bir kod yazmadan önce, projenize IronXL'i eklemeniz gerekmektedir. En hızlı yol, Visual Studio'daki NuGet Paket Yöneticisi Konsolu üzerinden işlemektir:

PM > Install-Package IronXL.Excel

Alternatif olarak, .NET CLI'yi kullanın:

dotnet add package IronXL.Excel

.NET 10 üst seviye ifadeleri ile kurulumu, dosyanızın üst kısmına gerekli ad alanlarını ekledikten sonra şu şekilde görünür:

using IronXL;
using System.Data;
using System.Data.SqlClient;

IronXL, .NET Standard 2.0 ve üstünü hedeflediği için, .NET 10, .NET Framework, ASP.NET Core ve Blazor projeleri ile ekstra bir yapılandırma gerektirmeden çalışır. Paketi NuGet üzerinden bulabilirsiniz.

SQL Server Veritabanından Veri Dışa Aktarmanın En İyi Yolu Nedir?

SQL Server'dan bir Excel dosyasına veri aktarmanın en etkili yolu üç adımdan oluşur: bir veritabanı bağlantısı kurmak, verileri bir DataTable içine almak ve IronXL kullanarak verileri bir Excel çalışma sayfasına yazmak. Microsoft Interop çözümlerinin aksine, IronXL bağımsız çalışır ve COM interop yükünden kaynaklanan performans darboğazları olmaksızın büyük veri kümelerini işler.

Temel desen basittir. SqlDataAdapter, Microsoft'un ADO.NET veri erişim çerçevesinin bir parçasıdır ve relational veritabanlarından DataTable nesnelerini doldurmanın standard yolu olmuştur, .NET 1.0'dan bu yana:

  1. Bağlantı diziğinizle bir SqlConnection açın
  2. Bir DataTable veya DataSet doldurmak için SqlDataAdapter kullanın
  3. Bir çalışma kitabı oluşturmak ve çalışma sayfası hücrelerini doldurmak için IronXL metodlarını çağırın
  4. Çalışma kitabını .xlsx veya .xls olarak kaydedin

Bu yaklaşım, SQL Server 2012 ve sonrası sürümler, Azure SQL Veritabanı, Amazon RDS for SQL Server ve ADO.NET uyumlu herhangi bir veri kaynağı ile uyumludur. Aynı desen, bir konsol uygulaması veya web tabanlı bir raporlama aracı ile çalışılırken de geçerlidir.

SQL Server'a Nasıl Bağlanır ve Veri Alırsınız?

SQL verilerini dışa aktarmadan önce, bir bağlantı kurmanız ve bir DataTable doldurmak için bir SQL sorgusu çalıştırmanız gerekir. Bağlantı dizesi, verilerinize erişim sağlamak için gerekli olan SQL Server veritabanı kimlik bilgilerini ve sunucu bilgilerini içerir.

Aşağıdaki örnek, Hayırrthwind Customers tablosunu sorgular ve her satırı IronXL'in hücre yazma API'si kullanarak bir Excel çalışma sayfasına yazar:

using IronXL;
using System.Data;
using System.Data.SqlClient;

string connectionString = "Data Source=localhost;Initial Catalog=Hayırrthwind;Integrated Security=True";
string sql = "SELECT * FROM Customers";

using SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
DataTable dt = new DataTable();
adapter.Fill(dt);

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet workSheet = workBook.CreateWorkSheet("Customers");

// Write column headers
for (int col = 0; col < dt.Columns.Count; col++)
{
    workSheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
}

// Write data rows
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        workSheet.SetCellValue(row + 1, col, dt.Rows[row][col].ToString());
    }
}

workBook.SaveAs("CustomerExport.xlsx");

Çıktı

IronXL ile SQL Verilerini Excel'e Aktarma: Görüntü 1 - Oluşturulan Excel dosyası

Bu kod, SQL Server tablo yapınızdan türetilmiş uygun biçimli sütun başlıkları ile bir Excel dosyası oluşturur. DataTable dt, sorgu sonuçlarını depolar ve daha sonra sıfır tabanlı sıra ve sütun indeksleri kullanılarak sistematik olarak her hücreye yazılır. IronXL, Microsoft Office uygulamaları ile geniş uyumluluk sağlamak için .xls ve .xlsx formatlarını destekler.

SQL tablonuz DateTime veya sayısal sütunlar içeriyorsa, SetCellValue çağrılmadan önce hücre değerlerini uygun şekilde dönüştürün. Sayısal türleri doğrudan geçirmek, Excel veri türlerini korur ve dışa aktarılan sütunlarda sıralama ve formül hesaplamalarını etkinleştirir.

Birden Fazla Tabloyu Dışa Aktarmak için LoadWorkSheetsFromDataSet Nasıl Kullanılır?

Raporunuzun, örneğin Ürünler ve Kategoriler gibi, birkaç SQL tablosundan veri alması gerektiğinde, verileri bir DataSet içine yükleyip IronXL'nin her tablo için otomatik olarak bir çalışma sayfası oluşturmasına izin verin. Bu, bir DataSet veya DataTable'ı Excel'e dışa aktarmanın en özlü yaklaşımıdır.

using IronXL;
using System.Data;
using System.Data.SqlClient;

string connectionString = "Data Source=.;Initial Catalog=Inventory;Integrated Security=True";

using SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

SqlDataAdapter productsAdapter = new SqlDataAdapter("SELECT * FROM Products", connection);
SqlDataAdapter categoriesAdapter = new SqlDataAdapter("SELECT * FROM Categories", connection);

DataSet dataSet = new DataSet();
productsAdapter.Fill(dataSet, "Products");
categoriesAdapter.Fill(dataSet, "Categories");

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);

workBook.SaveAs("InventoryReport.xlsx");

Çıktı

IronXL ile SQL Verilerini Excel'e Aktarma: Image 4 - Sütun başlıkları içeren oluşturulan dosya

LoadWorkSheetsFromDataSet, DataSet içindeki her bir DataTable nesnesinin TableName özelliğini okur ve eşleşen bir çalışma sayfası sekmesi oluşturur. DataTable 'dan gelen sütun adları her sayfanın başlık satırı olur. Bu yöntem, birden fazla sonuç kümesi döndüren saklı yordamlar için özellikle kullanışlıdır, çünkü DataSet kümesini birden fazla SqlDataAdapter çağrısı kullanarak doldurabilir ve ardından her şeyi tek bir adımda dışa aktarabilirsiniz.

Özel biçimlendirme ile Excel dosyaları oluşturması gereken uygulamalar için, LoadWorkSheetsFromDataSet çağrısını yaptıktan sonra hala her bir çalışma sayfasına erişebilir ve kaydetmeden önce stiller, sütun genişlikleri veya formüller uygulayabilirsiniz.

Bir ASP.NET Dışa Aktarma Düğmesi Kullanarak Verileri Nasıl Dışa Aktarırsınız?

Web uygulamaları için, genellikle bir kullanıcı bir düğmeye tıkladığında dışa aktarma tetiklenir. Aşağıdaki ASP.NET Web Forms örneği, buton tıklama olayını nasıl işleyip bir SQL sorgusundan Excel çalışma kitabı oluşturup dosyayı Response.AddHeader kullanarak tarayıcıya indirme olarak gönderileceğini gösterir:

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

public partial class ExportPage : Page
{
    private void ExportButton_Click(object sender, EventArgs e)
    {
        string connectionString = "Data Source=localhost;Initial Catalog=Sales;Integrated Security=True";

        using SqlConnection connection = new SqlConnection(connectionString);
        SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Orders", connection);
        DataSet dataSet = new DataSet();
        adapter.Fill(dataSet);

        WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);

        byte[] fileBytes = workBook.ToByteArray();
        string filename = "OrdersExport.xlsx";

        Response.Clear();
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        Response.AddHeader("content-disposition", "attachment;filename=" + filename);
        Response.BinaryWrite(fileBytes);
        Response.End();
    }
}

Örnek Dışa Aktarma Düğmesi

IronXL ile SQL Verilerini Excel'e Aktarma: Görüntü 2 - Örnek dışa aktarma düğmesi ui

Çıktı

IronXL ile SQL Verilerini Excel'e Aktarma: Image 3 - Oluşturulan dosya

ToByteArray() metodu, tüm çalışma kitabını bellek içi bir bayt dizisine dönüştürür, ki bu daha sonra doğrudan HTTP yanıt akışına yazılır. Bu, diske geçici bir dosya yazmayı önler. Sunucuda object misValue yer tutucular ve yüklenmiş bir Office lisansı gerektiren Microsoft Interop'un aksine, IronXL tamamen yönetilen kod üzerine çalışır ve hiçbir dış bağımlılığı yoktur.

ASP.NET Core ve Razor Pages projeleri için, denetleyici eyleminizden Response.BinaryWrite yerine return File(fileBytes, contentType, filename) kullanın. ASP.NET Core'un Excel'e dışa aktarım deseni aynı çalışma kitabı-byte dizisi yaklaşımını takip eder.

Dışa Aktarılan Excel Dosyalarına Biçimlendirme ve Sütun Başlıklarını Nasıl Ekleyebilirsiniz?

Hammade SQL dışavurumları, son kullanıcılara paylaşmadan önce sıklıkla sunum iyileştirmelerine ihtiyaç duyar. IronXL, veri çalışma sayfasına yazıldıktan sonra hücre stilleri, sütun genişlikleri ve sayı formatları üzerinde kontrol sunar. Aşağıdaki örnek, başlık satırını kalın yapmayı ve sütun genişliklerini otomatik olarak ayarlamayı gösterir:

using IronXL;
using System.Data;
using System.Data.SqlClient;

string connectionString = "Data Source=localhost;Initial Catalog=Sales;Integrated Security=True";

using SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

SqlDataAdapter adapter = new SqlDataAdapter("SELECT OrderID, CustomerID, OrderDate, Total FROM Orders", connection);
DataTable dt = new DataTable();
adapter.Fill(dt);

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet workSheet = workBook.CreateWorkSheet("Orders");

// Write and style header row
for (int col = 0; col < dt.Columns.Count; col++)
{
    workSheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
    workSheet[0, col].Style.Font.Bold = true;
    workSheet[0, col].Style.Font.Height = 12;
}

// Write data rows with type-aware value assignment
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        object value = dt.Rows[row][col];
        if (value is DateTime date)
            workSheet.SetCellValue(row + 1, col, date.ToString("yyyy-MM-dd"));
        else if (value is decimal || value is double || value is int)
            workSheet.SetCellValue(row + 1, col, Convert.ToDouble(value));
        else
            workSheet.SetCellValue(row + 1, col, value.ToString());
    }
}

workBook.SaveAs("FormattedOrdersExport.xlsx");

Başlık satırını kalın metin ve daha büyük bir yazı tipiyle stilize etmek, Excel'de dışa aktarılan raporların okunmasını kolaylaştırır. Toplamlar veya sayımlar gibi sayı sütunları için, bir dize yerine bir double değeri geçirmek, Excel'in yerel sıralama ve toplama işlevlerinin dışa aktarılan veriler üzerinde doğru şekilde çalışmasını sağlar.

IronXL hücre biçimlendirme belgelerinde -- hücre kenarlıkları, arka plan renkleri ve sayı format maskeleri de dahil olmak üzere -- biçimlendirme seçeneklerinin tam kapsamını keşfedebilirsiniz.

Büyük SQL Veri Kümesini Verimli bir Şekilde Nasıl Ele Alırsınız?

On binlerce satır içeren tablolar için bellek yönetimi önemli hale gelir. Excel'e yazmadan önce tüm sonuç kümesinin bir DataTable içine yüklenmesi çoğu rapor için iyi çalışır, ancak çok büyük dışa aktarımlar için satırları gruplar halinde işleyebilir veya doğrudan SqlDataReader kullanabilirsiniz.

Yüksek hacimli dışa aktarımlar ile çalışırken, aşağıdaki stratejileri göz önünde bulundurun:

  • SQL OFFSET/FETCH ile sayfalama: Büyük dışa aktarımları, her biri bir sonuç sayfası içeren birden fazla çalışma sayfasına bölün. Bu, tek tek sayfa boyutlarını Excel'de yönetilebilir tutar.
  • Diske akış: Her bir grup sonrası çağrıyı workBook.SaveAs(filePath) olarak yapın, her şeyi bellekte tutmak yerine ToByteArray() ile.
  • Seçilen sütunları sınırlayın: Marshal.ReleaseComObject yerine SELECT ifadesinde açıkça sütun listeleri kullanın, SQL Server'dan aktarılan veri miktarını azaltmak için.

C#'ta bir DataTable'ı Excel'e dışa aktarmanın en hızlı yolu hakkındaki detaylar için IronXL blogunda farklı yaklaşımların ve bellek profillerinin karşılaştırıldığı bir kıyaslama makalesi vardır.

WorkBook.LoadWorkSheetsFromDataSet metodu, orta boyutlu DataSet objeleri için özellikle verimlidir, çünkü satır yineleme işlemini içsel olarak kullanır. DataTable'dan Excel'e dışa aktarma senaryosu için, bu yöntem kalıp kodu azaltır ve toplu yazma işlemleri için optimize edilmiştir.

Verileri Tekrar Excel'den SQL Server'a Nasıl İçe Aktarabilirsiniz?

Birçok raporlama uygulaması için dışa aktarma iş akışı sadece hikayenin yarısıdır. Kullanıcıların bir şablon indirip içine veri doldurmasına ve ardından SQL Server'a tekrar yüklemesine izin vermeniz gerekebilir. IronXL, bu iki yönlü iş akışını kolaylaştırır.

Bir veritabanına Excel verilerini aktarmak için, yüklenen dosyayı WorkBook.Load(filePath) ile yükleyin, çalışma sayfası satırları arasında yineleme yapın ve her satırı parametreli bir SqlCommand kullanarak ekleyin:

using IronXL;
using System.Data.SqlClient;

WorkBook workBook = WorkBook.Load("UploadedData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

string connectionString = "Data Source=localhost;Initial Catalog=Inventory;Integrated Security=True";

using SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

// Skip header row, start at row index 1
for (int row = 1; row <= sheet.RowCount; row++)
{
    string productName = sheet[row, 0].StringValue;
    int quantity = (int)sheet[row, 1].DoubleValue;
    decimal price = (decimal)sheet[row, 2].DoubleValue;

    using SqlCommand cmd = new SqlCommand(
        "INSERT INTO Products (Name, Quantity, Price) VALUES (@name, @qty, @price)",
        connection);
    cmd.Parameters.AddWithValue("@name", productName);
    cmd.Parameters.AddWithValue("@qty", quantity);
    cmd.Parameters.AddWithValue("@price", price);
    cmd.ExecuteNonQuery();
}

Parametreli sorgular, kullanıcı tarafından sağlanan Excel verilerini okurken SQL enjeksiyonlarına karşı koruma sağlar. SqlCommand belgelerinde Microsoft Learn'de tüm mevcut aşırı yüklemeler ve parametre bağlama düzenleri yer almaktadır. Her zaman hücre değerlerini eklemeden önce doğrulayın - boş dizeler, aralık dışı numaralar ve SQL Server tablolarınızda kısıtlama ihlalleri oluşturabilecek beklenmedik veri türleri olup olmadığını kontrol edin.

Ters yönde, verilerinizin virgülle ayrılmış çıktılar ürettiği senaryolar için IronXL ayrıca C# içinde CSV dosyalarını okuma desteği de sağlar.

IronXL'i Diğer Dışa Aktarım Yaklaşımları ile Nasıl Karşılaştırırsınız?

.NET'te SQL verilerini Excel'e dışa aktarmak için birkaç yaklaşım bulunmaktadır. Aşağıdaki tablo, başlıca karşılaştırmalı özellikleri özetlemektedir:

.NET'te SQL-Excel Dışa Aktarım Yaklaşımları -- Özellik Karşılaştırması
YaklaşımOfis GerekliDataSet DesteğiBiçimlendirmeSunucu-Güvenli
IronXLHayırEvet (dahili)Tam stiller, formüllerEvet
Microsoft InteropEvetManuel yinelemeTam COM ileHayır (COM sunucusu)
EPPlusHayırManuel yinelemeKapsamlıEvet
NPOIHayırManuel yinelemeİyiEvet
CSV çıktısıHayırElleHayırneEvet

Microsoft Interop, sunucuya Office yüklenmesini gerektirir ve sunucu tarafı web uygulamalarında desteklenmez. IronXL, EPPlus ve NPOI, Office olmadan çalışır. IronXL'nin avantajı ise DataSet ve DataTable desteği, LoadWorkSheetsFromDataSet üzerinden birinci sınıfıdır ve dışa aktarma kodunu manuel satır iterasyonlarına kıyasla birkaç satıra indirir.

Daha ayrıntılı bir baştan başa karşılaştırma için, Microsoft Office Interop alternatifleri makalesine bakınız.

Sonraki Adımlarınız Neler?

C# kullanarak SQL verilerini Excel'e dışa aktarmak IronXL ile doğrudan hale gelir. Kütüphane, karmaşık Interop bağımlılıklarını ortadan kaldırırken DataTable, DataSet ve doğrudan veritabanı entegrasyonu için güçlü destek sağlar. Konsol uygulamaları geliştiriyor ol veya dosya indirme yeteneklerine sahip web tabanlı raporlama sistemleri kuruyorsanız, IronXL, tüm .NET 10 proje türlerinde güvenilir bir Excel dosya oluşturma işlevselliği sunar.

Bu temeli inşa etmeye devam etmek için, ilgili kaynakları inceleyin:

Üretim dağıtımı için lisans satın alın veya bu Excel kütüphanesinin tüm yeteneklerini .NET projelerinizde test etmek için ücretsiz denemeye devam edin.

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