IronXL Kullanarak Office Gerektirmeyen C# Dilinde DataSet'i Excel'e Aktarma
C#'ta bir DataSet veya DataTable'ı Excel'e dışa aktarmak, yapılandırılmış bellekteki verileri profesyonel elektronik tablo dosyalarına dönüştürmenin güvenilir bir yolunu sunar -- hedef makinada Microsoft Office yüklü olmasına bağlı olmadan. İster bir SQL veritabanından kayıt çekin, programatik olarak bir DataSet oluşturun, ister mevcut bir DataGrid ile çalışın, IronXL temiz, kod-öncelikli bir API aracılığıyla tüm hattı yönetir. Bu kılavuz, üst düzey C# ifadelerini ve .NET 10'u kullanarak her ana senaryoyu -- tek tabloluk dışa aktarmadan çok sayfalı çalışma kitaplarına ve canlı veritabanı sorgu sonuçlarına kadar -- ele alır.
Bir kez IronXL yükleyin, birkaç satır kod yazın ve verileriniz tek bir Office bağımlılığı olmadan bir XLSX dosyasında. Aşağıdaki bölümler, kurulum, çekirdek biçimler, gelişmiş biçimlendirme ve veritabanı entegrasyonu konularında doğrudan kendi projelerinize kopyalayıp yapıştırabileceğiniz bir şekilde ele alınır.
Excel Dışa Aktarımı İçin IronXL Nasıl Kurulur?
Herhangi bir dışa aktarma kodu yazmadan önce, NuGet Paket Yöneticisi aracılığıyla projenize IronXL'yi ekleyin. Projenizin kök dizininde bir terminal açın ve .NET CLI komutunu çalıştırın veya Visual Studio'da Paket Yöneticisi Konsolu'nu kullanarak Install-Package komutunu kullanın:
dotnet add package IronXL.Excel
Veya Visual Studio Paket Yöneticisi Konsolunda:
Install-Package IronXL.Excel
Yüklemeden sonra, IronXL ad alanını içe aktarmak için üst düzey bir using ifadesi ekleyin:
using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
IronXL, .NET 8, .NET 9 ve .NET 10'u ve aynı zamanda daha eski .NET Framework sürümlerini (4.6.2+) hedef alır. Herhangi bir makinede -- sunucu, masaüstü veya bulut -- Office kurulumu gerekmez. Paket yüklendikten sonra, tamamen yönetilen kodda XLSX, XLS ve CSV dosyalarını oluşturabilir, okuyabilir ve yazabilirsiniz.
Ayrıntılı yükleme seçenekleri için IronXL kurulum kılavuzunu ve sürüm geçmişi için NuGet paket sayfasını inceleyin.
Tek Bir DataTable'ı Excel Dosyasına Nasıl Dışa Aktarırsınız?
En yaygın senaryo, bir DataTable'ı tek bir çalışma sayfasına dışa aktarmaktır. IronXL'nin WorkBook ve WorkSheet sınıfları Excel nesne modeline doğal olarak eşleşir. Bir çalışma kitabı oluşturur, bir çalışma sayfası ekler, ardından DataTable'ın sütunlarını ve satırlarını yineleyebilirsiniz.
Aşağıdaki örnek, bellekte bir Çalışanlar DataTable'ı oluşturur ve bunu EmployeeData.xlsx'ye yazar:
using IronXL;
using System.Data;
// Build an in-memory DataTable
DataTable dt = new DataTable("Employees");
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Department", typeof(string));
dt.Rows.Add(1, "John Smith", "Engineering");
dt.Rows.Add(2, "Sarah Jones", "Marketing");
dt.Rows.Add(3, "Mike Wilson", "Sales");
// Create a workbook and a named worksheet
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("Employees");
// Write column headers in row 0
for (int col = 0; col < dt.Columns.Count; col++)
{
worksheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
}
// Write data rows starting at row 1
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("EmployeeData.xlsx");
using IronXL;
using System.Data;
// Build an in-memory DataTable
DataTable dt = new DataTable("Employees");
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Department", typeof(string));
dt.Rows.Add(1, "John Smith", "Engineering");
dt.Rows.Add(2, "Sarah Jones", "Marketing");
dt.Rows.Add(3, "Mike Wilson", "Sales");
// Create a workbook and a named worksheet
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("Employees");
// Write column headers in row 0
for (int col = 0; col < dt.Columns.Count; col++)
{
worksheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
}
// Write data rows starting at row 1
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("EmployeeData.xlsx");
Imports IronXL
Imports System.Data
' Build an in-memory DataTable
Dim dt As New DataTable("Employees")
dt.Columns.Add("ID", GetType(Integer))
dt.Columns.Add("Name", GetType(String))
dt.Columns.Add("Department", GetType(String))
dt.Rows.Add(1, "John Smith", "Engineering")
dt.Rows.Add(2, "Sarah Jones", "Marketing")
dt.Rows.Add(3, "Mike Wilson", "Sales")
' Create a workbook and a named worksheet
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim worksheet As WorkSheet = workbook.CreateWorkSheet("Employees")
' Write column headers in row 0
For col As Integer = 0 To dt.Columns.Count - 1
worksheet.SetCellValue(0, col, dt.Columns(col).ColumnName)
Next
' Write data rows starting at row 1
For row As Integer = 0 To dt.Rows.Count - 1
For col As Integer = 0 To dt.Columns.Count - 1
worksheet.SetCellValue(row + 1, col, dt.Rows(row)(col).ToString())
Next
Next
workbook.SaveAs("EmployeeData.xlsx")
Çıktı

SetCellValue int, double, string ve bool kabul eder - böylece ekstra dönüştürme olmadan yerel Excel hücre tiplerini elde edersiniz. Döngü şablonu her boyuttaki tablolar için çalışır çünkü IronXL doğrudan belleğe yazar ve yalnızca SaveAs çağrıldığında diske boşaltım yapar, süreci binlerce satır için bile verimli tutar.
Daha geniş bir okuma ve yazma teknikleri değerlendirmesi için, IronXL C# öğreticisi bu dışa aktarma deseninin yanında tüm dosya işlemlerinin kapsamını sunar.
Bir DataSet'i Birden Fazla Excel Çalışma Sayfasına Nasıl Dışa Aktarırız?
Bir DataSet birkaç ilgili tablo içerdiğinde -- örneğin Ürünler ve Siparişler gibi -- her bir DataTable'ı kendi çalışma sayfasına bir çalışma kitabı içinde eşleyebilirsiniz. Bu, alıcıların birden fazla belgeyi açmasına gerek kalmadan tüm ilgili verileri tek bir dosyada görmelerini sağlar.
Aşağıdaki döngü ds.Tables iterasyonunu gerçekleştirir ve tablo başına bir sayfa oluşturur:
using IronXL;
using System.Data;
// Build a DataSet with two related tables
DataSet ds = new DataSet("CompanyData");
DataTable dtProducts = new DataTable("Products");
dtProducts.Columns.Add("ProductID", typeof(int));
dtProducts.Columns.Add("ProductName", typeof(string));
dtProducts.Columns.Add("Price", typeof(decimal));
dtProducts.Rows.Add(101, "Widget A", 29.99m);
dtProducts.Rows.Add(102, "Widget B", 49.99m);
ds.Tables.Add(dtProducts);
DataTable dtOrders = new DataTable("Orders");
dtOrders.Columns.Add("OrderID", typeof(int));
dtOrders.Columns.Add("Customer", typeof(string));
dtOrders.Columns.Add("Total", typeof(decimal));
dtOrders.Rows.Add(1001, "Acme Corp", 599.90m);
dtOrders.Rows.Add(1002, "Tech Inc", 299.95m);
ds.Tables.Add(dtOrders);
// Create one workbook and iterate each DataTable
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
foreach (DataTable table in ds.Tables)
{
WorkSheet sheet = workbook.CreateWorkSheet(table.TableName);
// Write headers
for (int col = 0; col < table.Columns.Count; col++)
{
sheet.SetCellValue(0, col, table.Columns[col].ColumnName);
}
// Write rows
for (int row = 0; row < table.Rows.Count; row++)
{
for (int col = 0; col < table.Columns.Count; col++)
{
sheet.SetCellValue(row + 1, col, table.Rows[row][col].ToString());
}
}
}
workbook.SaveAs("CompanyReport.xlsx");
using IronXL;
using System.Data;
// Build a DataSet with two related tables
DataSet ds = new DataSet("CompanyData");
DataTable dtProducts = new DataTable("Products");
dtProducts.Columns.Add("ProductID", typeof(int));
dtProducts.Columns.Add("ProductName", typeof(string));
dtProducts.Columns.Add("Price", typeof(decimal));
dtProducts.Rows.Add(101, "Widget A", 29.99m);
dtProducts.Rows.Add(102, "Widget B", 49.99m);
ds.Tables.Add(dtProducts);
DataTable dtOrders = new DataTable("Orders");
dtOrders.Columns.Add("OrderID", typeof(int));
dtOrders.Columns.Add("Customer", typeof(string));
dtOrders.Columns.Add("Total", typeof(decimal));
dtOrders.Rows.Add(1001, "Acme Corp", 599.90m);
dtOrders.Rows.Add(1002, "Tech Inc", 299.95m);
ds.Tables.Add(dtOrders);
// Create one workbook and iterate each DataTable
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
foreach (DataTable table in ds.Tables)
{
WorkSheet sheet = workbook.CreateWorkSheet(table.TableName);
// Write headers
for (int col = 0; col < table.Columns.Count; col++)
{
sheet.SetCellValue(0, col, table.Columns[col].ColumnName);
}
// Write rows
for (int row = 0; row < table.Rows.Count; row++)
{
for (int col = 0; col < table.Columns.Count; col++)
{
sheet.SetCellValue(row + 1, col, table.Rows[row][col].ToString());
}
}
}
workbook.SaveAs("CompanyReport.xlsx");
Imports IronXL
Imports System.Data
' Build a DataSet with two related tables
Dim ds As New DataSet("CompanyData")
Dim dtProducts As New DataTable("Products")
dtProducts.Columns.Add("ProductID", GetType(Integer))
dtProducts.Columns.Add("ProductName", GetType(String))
dtProducts.Columns.Add("Price", GetType(Decimal))
dtProducts.Rows.Add(101, "Widget A", 29.99D)
dtProducts.Rows.Add(102, "Widget B", 49.99D)
ds.Tables.Add(dtProducts)
Dim dtOrders As New DataTable("Orders")
dtOrders.Columns.Add("OrderID", GetType(Integer))
dtOrders.Columns.Add("Customer", GetType(String))
dtOrders.Columns.Add("Total", GetType(Decimal))
dtOrders.Rows.Add(1001, "Acme Corp", 599.90D)
dtOrders.Rows.Add(1002, "Tech Inc", 299.95D)
ds.Tables.Add(dtOrders)
' Create one workbook and iterate each DataTable
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
For Each table As DataTable In ds.Tables
Dim sheet As WorkSheet = workbook.CreateWorkSheet(table.TableName)
' Write headers
For col As Integer = 0 To table.Columns.Count - 1
sheet.SetCellValue(0, col, table.Columns(col).ColumnName)
Next
' Write rows
For row As Integer = 0 To table.Rows.Count - 1
For col As Integer = 0 To table.Columns.Count - 1
sheet.SetCellValue(row + 1, col, table.Rows(row)(col).ToString())
Next
Next
Next
workbook.SaveAs("CompanyReport.xlsx")
Çıktı

Her çalışma sayfası kaynak DataTable'ın adıyla adlandırılır, bu da Excel içindeki gezinmeyi kolaylaştırır. WorkBook.Create çalışma kitabını bellekte tahsis ettiği için döngüde dosyayı yeniden açmadan çalışma sayfaları eklemeye devam edebilirsiniz -- IronXL tüm XLSX yapısını disk yazımından önce oluşturur.
IronXL Çalışma Kitabı dökümantasyonu, Çalışma Kitabı nesnesi üzerinde mevcut olan her yöntemi, yaprak sıralamasını yenileme, parola koruması ve XLSX dışındaki formatlarda kaydetme dahil olmak üzere listeler.
Excel Dışa Aktarımlarına Üstbilgi Biçimlendirmesi Nasıl Eklenir?
Düz veri dışa aktarımları işlevseldir, ancak kalın üstbilgiler ve sütun genişlikleri eklemek çıktıyı iş bağlamında hemen kullanabilir hale getirir. IronXL, hücre ve aralık stillerini herhangi bir WorkSheet aralığına bağlı olan Style nesnesi aracılığıyla sunar.
Aşağıdaki kod parçası, üstbilgi satırına kalın yazı tipi biçimlendirmesi uygular ve veri yazar yazmaz sütunları otomatik olarak boyutlandırır:
using IronXL;
using System.Data;
DataTable dt = new DataTable("Sales");
dt.Columns.Add("Region", typeof(string));
dt.Columns.Add("Q1", typeof(decimal));
dt.Columns.Add("Q2", typeof(decimal));
dt.Columns.Add("Q3", typeof(decimal));
dt.Columns.Add("Q4", typeof(decimal));
dt.Rows.Add("Hayırrth", 120000m, 135000m, 142000m, 158000m);
dt.Rows.Add("South", 98000m, 104000m, 112000m, 121000m);
dt.Rows.Add("East", 87000m, 93000m, 99000m, 108000m);
dt.Rows.Add("West", 145000m, 152000m, 161000m, 174000m);
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Sales");
// Write and style headers
for (int col = 0; col < dt.Columns.Count; col++)
{
sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
sheet["A1:E1"].Style.Font.Bold = true;
sheet["A1:E1"].Style.Font.Height = 12;
}
// Write data rows
for (int row = 0; row < dt.Rows.Count; row++)
{
for (int col = 0; col < dt.Columns.Count; col++)
{
sheet.SetCellValue(row + 1, col, dt.Rows[row][col]);
}
}
workbook.SaveAs("SalesReport.xlsx");
using IronXL;
using System.Data;
DataTable dt = new DataTable("Sales");
dt.Columns.Add("Region", typeof(string));
dt.Columns.Add("Q1", typeof(decimal));
dt.Columns.Add("Q2", typeof(decimal));
dt.Columns.Add("Q3", typeof(decimal));
dt.Columns.Add("Q4", typeof(decimal));
dt.Rows.Add("Hayırrth", 120000m, 135000m, 142000m, 158000m);
dt.Rows.Add("South", 98000m, 104000m, 112000m, 121000m);
dt.Rows.Add("East", 87000m, 93000m, 99000m, 108000m);
dt.Rows.Add("West", 145000m, 152000m, 161000m, 174000m);
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Sales");
// Write and style headers
for (int col = 0; col < dt.Columns.Count; col++)
{
sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
sheet["A1:E1"].Style.Font.Bold = true;
sheet["A1:E1"].Style.Font.Height = 12;
}
// Write data rows
for (int row = 0; row < dt.Rows.Count; row++)
{
for (int col = 0; col < dt.Columns.Count; col++)
{
sheet.SetCellValue(row + 1, col, dt.Rows[row][col]);
}
}
workbook.SaveAs("SalesReport.xlsx");
Imports IronXL
Imports System.Data
Dim dt As New DataTable("Sales")
dt.Columns.Add("Region", GetType(String))
dt.Columns.Add("Q1", GetType(Decimal))
dt.Columns.Add("Q2", GetType(Decimal))
dt.Columns.Add("Q3", GetType(Decimal))
dt.Columns.Add("Q4", GetType(Decimal))
dt.Rows.Add("Hayırrth", 120000D, 135000D, 142000D, 158000D)
dt.Rows.Add("South", 98000D, 104000D, 112000D, 121000D)
dt.Rows.Add("East", 87000D, 93000D, 99000D, 108000D)
dt.Rows.Add("West", 145000D, 152000D, 161000D, 174000D)
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Sales")
' Write and style headers
For col As Integer = 0 To dt.Columns.Count - 1
sheet.SetCellValue(0, col, dt.Columns(col).ColumnName)
sheet("A1:E1").Style.Font.Bold = True
sheet("A1:E1").Style.Font.Height = 12
Next
' Write data rows
For row As Integer = 0 To dt.Rows.Count - 1
For col As Integer = 0 To dt.Columns.Count - 1
sheet.SetCellValue(row + 1, col, dt.Rows(row)(col))
Next
Next
workbook.SaveAs("SalesReport.xlsx")
Style.Font.Bold özelliği, tek bir ifadede tüm başlık aralığına uygulanır. IronXL ayrıca arka plan renklerini (Style.BackgroundColor), kenarlık stillerini (Style.Border), sayı formatlarını (Style.NumberFormat.FormatCode) ve yatay hizalamayı (Style.HorizontalAlignment) destekler. Tam stil referansı için IronXL hücre biçimlendirme kılavuzuna bakın.
Veritabanı Sorgu Sonuçlarını Excel'e Nasıl Dışa Aktarırız?
Bir SQL veritabanına bağlanmak ve sonuçları doğrudan Excel'e dışa aktarmak, gerçek dünyadaki bir kullanım örneğini kapsar -- planlı raporlar, veri anlık görüntüleri ve yönetim dışa aktarımları. Yaklaşım, bir Veri Kümesi'ni SqlDataAdapter kullanarak doldurur ve sonra ortaya çıkan DataTable'ı bir IronXL çalışma sayfasına haritalar.
using IronXL;
using System.Data;
using System.Data.SqlClient;
string connectionString = "Server=localhost;Database=SalesDB;Integrated Security=True;";
string query = "SELECT CustomerID, CompanyName, ContactName, Country FROM Customers";
// Fill DataSet from SQL query
DataSet ds = new DataSet();
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
adapter.Fill(ds, "Customers");
}
DataTable dt = ds.Tables["Customers"]!;
// Create workbook and export
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("CustomerData");
// Bold header row
for (int col = 0; col < dt.Columns.Count; col++)
{
worksheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
}
worksheet["A1:D1"].Style.Font.Bold = true;
// Write rows, handling DBNull values safely
for (int row = 0; row < dt.Rows.Count; row++)
{
for (int col = 0; col < dt.Columns.Count; col++)
{
object cellValue = dt.Rows[row][col];
worksheet.SetCellValue(row + 1, col,
cellValue == DBNull.Value ? "" : cellValue.ToString()!);
}
}
workbook.SaveAs("CustomerExport.xlsx");
Console.WriteLine("Export complete.");
using IronXL;
using System.Data;
using System.Data.SqlClient;
string connectionString = "Server=localhost;Database=SalesDB;Integrated Security=True;";
string query = "SELECT CustomerID, CompanyName, ContactName, Country FROM Customers";
// Fill DataSet from SQL query
DataSet ds = new DataSet();
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
adapter.Fill(ds, "Customers");
}
DataTable dt = ds.Tables["Customers"]!;
// Create workbook and export
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("CustomerData");
// Bold header row
for (int col = 0; col < dt.Columns.Count; col++)
{
worksheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
}
worksheet["A1:D1"].Style.Font.Bold = true;
// Write rows, handling DBNull values safely
for (int row = 0; row < dt.Rows.Count; row++)
{
for (int col = 0; col < dt.Columns.Count; col++)
{
object cellValue = dt.Rows[row][col];
worksheet.SetCellValue(row + 1, col,
cellValue == DBNull.Value ? "" : cellValue.ToString()!);
}
}
workbook.SaveAs("CustomerExport.xlsx");
Console.WriteLine("Export complete.");
Imports IronXL
Imports System.Data
Imports System.Data.SqlClient
Dim connectionString As String = "Server=localhost;Database=SalesDB;Integrated Security=True;"
Dim query As String = "SELECT CustomerID, CompanyName, ContactName, Country FROM Customers"
' Fill DataSet from SQL query
Dim ds As New DataSet()
Using connection As New SqlConnection(connectionString)
Dim adapter As New SqlDataAdapter(query, connection)
adapter.Fill(ds, "Customers")
End Using
Dim dt As DataTable = ds.Tables("Customers")
' Create workbook and export
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim worksheet As WorkSheet = workbook.CreateWorkSheet("CustomerData")
' Bold header row
For col As Integer = 0 To dt.Columns.Count - 1
worksheet.SetCellValue(0, col, dt.Columns(col).ColumnName)
Next
worksheet("A1:D1").Style.Font.Bold = True
' Write rows, handling DBNull values safely
For row As Integer = 0 To dt.Rows.Count - 1
For col As Integer = 0 To dt.Columns.Count - 1
Dim cellValue As Object = dt.Rows(row)(col)
worksheet.SetCellValue(row + 1, col, If(cellValue Is DBNull.Value, "", cellValue.ToString()))
Next
Next
workbook.SaveAs("CustomerExport.xlsx")
Console.WriteLine("Export complete.")
Veritabanı Dışa Aktarımı İçin Anahtar Hayırktalar
Boş kontrol (cellValue == DBNull.Value ? cellValue.ToString()) prevents exceptions when the database returns NULL değerleri -- isteğe bağlı sütunlarla sıkça görülen bir durum. Üstbilgi satırına kalın biçimlendirme, rapor alıcılarının hemen üstbilgileri veriden ayırt etmesini sağlar.
C# nesnelerine Excel'den veri okuma konusunda daha fazla desen için, IronXL DataTable dışa aktarma öğreticisi bu iş akışını nasıl tersine çevireceğinizi gösterir.
IronXL Diğer Excel Dışa Aktarma Yaklaşımlarıyla Nasıl Karşılaştırılır?
Bir kütüphane seçmeden önce, ana seçeneklerin, DataSet dışa aktarma senaryoları için en önemli olan alanlarda birbirlerine karşı nasıl biriktiğini anlamak faydalıdır.
| Yaklaşım | Ofis Gerekli | XLSX Desteği | Stil API'si | Çok Sayfalı | Performans (büyük veri) |
|---|---|---|---|---|---|
| IronXL | Hayır | Evet | Tam | Evet | Yüksek |
| Microsoft Office Interop | Evet | Evet | Tam | Evet | Düşük |
| EPPlus | Hayır | Evet | Kısmi | Evet | Yüksek |
| ClosedXML | Hayır | Evet | Kısmi | Evet | Orta |
| CSV (manuel) | Hayır | Hayır | Hayırne | Hayır | Çok yüksek |
Microsoft Office Interop yalnızca Office yüklü Windows makinelerde çalışır, bu da sunucu dağıtımlarını ve bulut işlevlerini dışarıda bırakır. IronXL, EPPlus ve ClosedXML tümü sunucu tarafı üretimini destekler -- anahtar ayrıştırıcı stil API'sinin kapsamı ve lisans modeli. IronXL'nin lisansı ticari kullanımı içerir ve tüm .NET hedef çerçevelerini tek bir paket kapsamında kapsar.
Üçüncü taraf kıyaslamaları ve karşılaştırmalar için, Microsoft dökümantasyonu Excel dosya formatları ve EPPlus proje sayfası, projeniz için doğru kararı vermek adına ek bağlam sağlar.
Büyük DataSetleri Bellek Sorunları Olmadan Nasıl Yönetirsiniz?
On binlerce satıra sahip DataTables dışa aktarıldığında, bellek kullanımının öngörülebilir olması önemlidir. Aşağıdaki desen, tam sonuç kümesini önce bir DataTable'a yüklemek yerine bir IDataReader'den veri akışı yapar. Bu, hem okuyucu tamponunu hem de DataTable'ı eşzamanlı olarak tutmanın çift belleği maliyetinden kaçınır.
using IronXL;
using System.Data;
using System.Data.SqlClient;
string connectionString = "Server=localhost;Database=InventoryDB;Integrated Security=True;";
string query = "SELECT ProductID, SKU, Description, StockLevel, UnitCost FROM Products";
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Inventory");
using SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
using SqlCommand cmd = new SqlCommand(query, conn);
using SqlDataReader reader = cmd.ExecuteReader();
// Write schema-derived headers
for (int col = 0; col < reader.FieldCount; col++)
{
sheet.SetCellValue(0, col, reader.GetName(col));
}
// Stream rows directly into IronXL without buffering a DataTable
int excelRow = 1;
while (reader.Read())
{
for (int col = 0; col < reader.FieldCount; col++)
{
sheet.SetCellValue(excelRow, col,
reader.IsDBNull(col) ? "" : reader.GetValue(col).ToString()!);
}
excelRow++;
}
workbook.SaveAs("InventoryExport.xlsx");
Console.WriteLine($"Exported {excelRow - 1} rows.");
using IronXL;
using System.Data;
using System.Data.SqlClient;
string connectionString = "Server=localhost;Database=InventoryDB;Integrated Security=True;";
string query = "SELECT ProductID, SKU, Description, StockLevel, UnitCost FROM Products";
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Inventory");
using SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
using SqlCommand cmd = new SqlCommand(query, conn);
using SqlDataReader reader = cmd.ExecuteReader();
// Write schema-derived headers
for (int col = 0; col < reader.FieldCount; col++)
{
sheet.SetCellValue(0, col, reader.GetName(col));
}
// Stream rows directly into IronXL without buffering a DataTable
int excelRow = 1;
while (reader.Read())
{
for (int col = 0; col < reader.FieldCount; col++)
{
sheet.SetCellValue(excelRow, col,
reader.IsDBNull(col) ? "" : reader.GetValue(col).ToString()!);
}
excelRow++;
}
workbook.SaveAs("InventoryExport.xlsx");
Console.WriteLine($"Exported {excelRow - 1} rows.");
Imports IronXL
Imports System.Data
Imports System.Data.SqlClient
Dim connectionString As String = "Server=localhost;Database=InventoryDB;Integrated Security=True;"
Dim query As String = "SELECT ProductID, SKU, Description, StockLevel, UnitCost FROM Products"
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Inventory")
Using conn As New SqlConnection(connectionString)
conn.Open()
Using cmd As New SqlCommand(query, conn)
Using reader As SqlDataReader = cmd.ExecuteReader()
' Write schema-derived headers
For col As Integer = 0 To reader.FieldCount - 1
sheet.SetCellValue(0, col, reader.GetName(col))
Next
' Stream rows directly into IronXL without buffering a DataTable
Dim excelRow As Integer = 1
While reader.Read()
For col As Integer = 0 To reader.FieldCount - 1
sheet.SetCellValue(excelRow, col, If(reader.IsDBNull(col), "", reader.GetValue(col).ToString()))
Next
excelRow += 1
End While
workbook.SaveAs("InventoryExport.xlsx")
Console.WriteLine($"Exported {excelRow - 1} rows.")
End Using
End Using
End Using
Bu desen, sonuç kümesinin 50.000 satırı aşabileceği veya bellek kısıtlamaları bulunan bir hizmet içinde çalıştığında önerilir. IronXL performans dökümantasyonu, yüksek hacimli dışa aktarmalar için ek bellek ve verim ayarlama seçeneklerini kapsar.
Çok Büyük Dışa Aktarımlar İçin CSV'ye Toplu Kaydetme
Bellek çok sıkışıksa, 500.000 satırı aşan dışa aktarımlar için çıktıyı birden çok çalışma kitabına bölmeyi veya CSV formatına dışa aktarmayı düşünün:
using IronXL;
// IronXL can save any workbook as CSV
workbook.SaveAs("LargeExport.csv");
using IronXL;
// IronXL can save any workbook as CSV
workbook.SaveAs("LargeExport.csv");
Imports IronXL
' IronXL can save any workbook as CSV
workbook.SaveAs("LargeExport.csv")
CSV, biçimlendirme ve çoklu sayfa desteğini kaybeder, ancak ham ayrılmış verileri tüketen aşağı akış ETL işlemleri için geçerli kalır.
Excel Dosyalarını Farklı Formatlara ve Yer Konumlarına Nasıl Kaydedersiniz?
IronXL, dosya yoluna, MemoryStream ve byte[] -- ASP.NET uygulamalarının Excel'i bir indirme yanıtı olarak döndürmesi gerektiğinde önemlidir.
using IronXL;
using System.IO;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Report");
sheet.SetCellValue(0, 0, "Generated Report");
// Save to file path
workbook.SaveAs("Report.xlsx");
// Save as XLS (legacy format)
workbook.SaveAs("Report.xls");
// Save to MemoryStream for HTTP response
using MemoryStream ms = new MemoryStream();
workbook.SaveAs(ms);
byte[] fileBytes = ms.ToArray();
// fileBytes can be returned from an ASP.NET controller action
using IronXL;
using System.IO;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Report");
sheet.SetCellValue(0, 0, "Generated Report");
// Save to file path
workbook.SaveAs("Report.xlsx");
// Save as XLS (legacy format)
workbook.SaveAs("Report.xls");
// Save to MemoryStream for HTTP response
using MemoryStream ms = new MemoryStream();
workbook.SaveAs(ms);
byte[] fileBytes = ms.ToArray();
// fileBytes can be returned from an ASP.NET controller action
Imports IronXL
Imports System.IO
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Report")
sheet.SetCellValue(0, 0, "Generated Report")
' Save to file path
workbook.SaveAs("Report.xlsx")
' Save as XLS (legacy format)
workbook.SaveAs("Report.xls")
' Save to MemoryStream for HTTP response
Using ms As New MemoryStream()
workbook.SaveAs(ms)
Dim fileBytes As Byte() = ms.ToArray()
' fileBytes can be returned from an ASP.NET controller action
End Using
ASP.NET Core için, tarayıcı indirmesini tetiklemek üzere denetleyici aksiyonunuzdan File(fileBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Report.xlsx") döndürün. IronXL ASP.NET Excel kılavuzu tam denetleyici entegrasyon desenini gösterir.
Alternatif .NET Excel kütüphaneleri için, Open XML SDK, birçok kütüphanenin temel aldığı açık-kaynaklı bir temeldir.
Desteklenen Çıktı Formatları
IronXL, ek bağımlılık olmadan aşağıdaki formatlara kaydeder:
- XLSX -- OpenXML formatı, Excel 2007 ve sonrası ile uyumlu
- XLS -- Eski binar format, Excel 97-2003 ile uyumlu
- CSV -- Virgülle ayrılmış değerler, evrensel olarak desteklenir
- TSV -- Sekmeyle ayrılmış değerler
- JSON -- Yapılandırılmış veri dışa aktarım
Formatları, SaveAs yolundaki dosya uzantısını değiştirerek veya bir ExcelFileFormat enum değeri kabul eden aşırı yüklenmiş yöntemi kullanarak değiştirin.
Dışa Aktarılan Excel Dosyasının Doğru Olduğunu Nasıl Doğrularsınız?
Dışa aktarımdan sonra, satır sayımlarını doğrulamak, değerleri kontrol etmek veya bir test projesinde otomatik talepler yürütmek için dosyayı IronXL ile geri okuyabilirsiniz:
using IronXL;
WorkBook loaded = WorkBook.Load("EmployeeData.xlsx");
WorkSheet sheet = loaded.WorkSheets[0];
// Verify row count (header row + data rows)
int totalRows = sheet.Rows.Count();
Console.WriteLine($"Rows in file: {totalRows}");
// Spot-check specific cell values
string header = sheet["A1"].StringValue;
string firstEmployee = sheet["A2"].StringValue;
Console.WriteLine($"Header: {header}, First row: {firstEmployee}");
using IronXL;
WorkBook loaded = WorkBook.Load("EmployeeData.xlsx");
WorkSheet sheet = loaded.WorkSheets[0];
// Verify row count (header row + data rows)
int totalRows = sheet.Rows.Count();
Console.WriteLine($"Rows in file: {totalRows}");
// Spot-check specific cell values
string header = sheet["A1"].StringValue;
string firstEmployee = sheet["A2"].StringValue;
Console.WriteLine($"Header: {header}, First row: {firstEmployee}");
Imports IronXL
Dim loaded As WorkBook = WorkBook.Load("EmployeeData.xlsx")
Dim sheet As WorkSheet = loaded.WorkSheets(0)
' Verify row count (header row + data rows)
Dim totalRows As Integer = sheet.Rows.Count()
Console.WriteLine($"Rows in file: {totalRows}")
' Spot-check specific cell values
Dim header As String = sheet("A1").StringValue
Dim firstEmployee As String = sheet("A2").StringValue
Console.WriteLine($"Header: {header}, First row: {firstEmployee}")
Bu doğrulama deseni, dışa aktarma doğruluğunun dosyaların dış sistemlere gönderilmeden önce doğrulanması gerektiği entegre test takımlarında özellikle kullanışlıdır. IronXL okuma eğitimi, bir dosyayı yükledikten sonra kullanılabilir tüm okuma işlemlerini gösterir.
.NET'te DataSet ve DataTable kalıpları hakkında daha fazla okuma için, Microsoft DataSet dökümantasyonu ADO.NET nesne modelini derinlemesine kapsar.
Sonraki Adımlarınız Neler?
Artık C#'daki her ana DataSet-ten Excel dışa aktarma senaryosu için çalışan kalıplarınız var -- tek bir DataTable'dan çok sayfalı çalışma kitaplarına, veritabanı ile sürüklenen dışa aktarımlarına, biçimlendirilmiş üstbilgilerine ve büyük veri akışına kadar. Hedefinize göre bir sonraki adımı nasıl atacağınız:
- IronXL'yi ücretsiz deneyin -- Üstteki örnekleri kendi verilerinize karşı çalıştırın ve üretime geçmeden önce kararınızı vermek için ücretsiz bir deneme lisansı ile başlayın.
- Tüm API referansını okuyun -- IronXL nesne referansı Çalışma Kitabı, Çalışma Sayfası ve hücre aralıklarındaki her yöntemi kapsar.
- İlgili dışa aktarma eğitimlerine göz atın -- C# DataTable'den Excel'e rehberi, ters iş akışını -- Excel'in geri dönüştürülerek DataTable nesnelerine okunmasını -- kapsar.
- Biçimlendirme seçeneklerini gözden geçirin -- IronXL hücre biçimlendirme dokümanları sayı formatlarını, kenarları, arka plan renklerini ve hizalama seçeneklerini gösterir.
- Lisansı kontrol edin -- Üretim dağıtımları için IronXL lisans sayfasına bakın ve Geliştirici, Organizasyon ve Telif Ücretsiz seçenekleri arasında seçim yapın.
- Diğer Iron Software araçları ile karşılaştırın -- Projenizin ayrıca PDF oluşturma veya OCR'ye ihtiyacı varsa, Iron Software ürün suiti, birden fazla kütüphaneyi indirimli fiyata toplamanızı sağlar.
Burada ele alınan kalıplara dayanarak, zamanlanmış görev otomasyonu, ASP.NET Core indirme uç noktaları ve tamamen yönetilen C#'ta çok formatlı çıkış boru hatları oluşturabilirsiniz -- Office yok, COM yok, NuGet paketinin ötesinde çalışma zamanı bağımlılığı yok.
Sıkça Sorulan Sorular
C# dilinde bir DataSet'i Excel'e nasıl aktarabilirim?
IronXL kütüphanesini kullanarak, Microsoft Office gerektirmeden, bir Excel dosyası oluşturmak, düzenlemek ve manipüle etmek için bir kod-ilk API sağlar, C# dilinde bir DataSet'i Excel'e ihraç edebilirsiniz.
IronXL'yi kullanmak için Microsoft Office yüklemem gerekiyor mu?
Hayır, IronXL, Excel dosyalarını ihraç etmek veya manipüle etmek için makineye Microsoft Office yüklemeye ihtiyaç duymaz.
IronXL kullanarak hangi veri türlerini ihraç edebilirim?
IronXL, yapılandırılmış verileri, DataTables ve DataSets dahil Excel dosyalarına ve ayrıca SqlDataReader ve diğer ADO.NET kaynaklarından gelen verileri ihraç etmenize olanak tanır.
IronXL Excel dosyası oluşturma ve düzenlemeyi işleyebilir mi?
Evet, IronXL C# dilinde programatik olarak Excel dosyaları oluşturmanız, düzenlemeniz ve manipüle etmeniz için işlevsellik sağlar.
IronXL sunucu tarafı ve bulut uygulamaları için uygun mu?
Evet, IronXL, herhangi bir Office kurulumuna ihtiyaç duymadan Excel dosyaları oluşturması gereken sunucu tarafı uygulamalar ve bulut fonksiyonları için idealdir.
DataSets'i ihraç ederken IronXL kullanmanın faydaları nelerdir?
IronXL, Microsoft Office gibi harici bağımlılıklar olmadan Excel dosyası oluşturma ve manipülasyon yapar, XLSX, XLS ve CSV formatlarını destekler ve tüm .NET hedef çerçevelerinde çalışır.
IronXL ASP.NET Core'da bir Excel indirmesi döndürmek için kullanılabilir mi?
Evet, IronXL, çalışma kitaplarını bir MemoryStream'e kaydedebilir ve ortaya çıkan bayt dizisi, ASP.NET Core denetleyici bir eyleminden dosya indirmesi olarak döndürülebilir.
IronXL büyük DataSets'i destekler mi?
Evet, IronXL, bir tam DataTable'ı tamponlamadan SqlDataReader'dan doğrudan veri akışı yapabilir ve bu, büyük sonuç kümesi için bellek kullanımını tahmin edilebilir tutar.
IronXL, hangi Excel formatlarını kaydetmeyi destekler?
IronXL, herhangi bir ek bağımlılık olmadan XLSX, XLS, CSV, TSV ve JSON formatlarına kaydetmeyi destekler.
Bold başlılar gibi biçimlendirmeyi Excel'e ihraç ederken uygulayabilir miyim?
Evet, IronXL hücre aralıkları üzerinde bold yazı tipi, arka plan renkleri, kenarlıklar, sayı formatları ve hizalama için bir Style API sağlar.




