C# ile Interop Kullanılmadan Excel'de Pivot Tablolar Nasıl Oluşturulur
C# ile Excel'de pivot tablo oluşturmak, dogru kutuphaneyi secerseniz basittir -- Excel Interop her makinede Office gerektirirken, IronXL her yerde .NET'in calistigi yerde calisir. Bu rehber, proje icin dogru karari verebilmeniz icin kurulum, veri toplama, alan konfigürasyonu ve dağıtim dusuncelerini kapsayan kod örnekleriyle her iki yaklasimi da ele alır.

Excel Interop ve IronXL Arasındaki Fark Nedir?
Tek bir satir kod yazmadan once, her yaklasimin motor altında ne yaptigini anlamak fayda saglar. Excel Interop, Microsoft Excel'i dogrudan C#'dan yonetmek icin COM (Bilesen Nesne Modeli) kullanir. .NET sureci, calisan bir Excel instansı ile iletisim kurar, bu da Excel'in makineye yüklenmesi gerektiği anlamına gelir. Yonetilen her nesne -- calisma kitaplari, tablolar, araliklar, pivot cacheleri -- bir COM sargisidir ve işlem sızdırmalarını onlemek için her biri acikca serbest birakilmalidir.
IronXL tamamen farkli bir yol izler. Open XML dosya formatını doğrudan okur ve yazar, hic Excel'i başlatmadan. Sonuç, tanıdık nesne deseniyle standart bir .NET kutuphanesi, cop toplamalı bellek ve Office kurulumu veya lisansına bağımlılık olmadan. Bu mimari, IronXL'yi server-side calismalar, Docker konteynerleri, Linux hostları ve .NET 6, .NET 8 veya .NET 10 ortamı icin uygun hale getirir.
| Kriterler | Excel Interop | IronXL |
|---|---|---|
| Ofis gerekti | Evet | Hayır |
| Sadece Windows | Evet | Hayır -- çapraz platform |
| Bellek yönetimi | Elle COM serbest bırakma | Otomatik (.NET GC) |
| Sunucu dağıtimi | Zor | Basit |
| Yerel pivot tablo | Tam Excel pivot API'si | Veri toplama LINQ üzerinden |
| Lisans gerekir | Office lisansı | Yalnızca IronXL lisansı |

Her Bir Kutuphane Nasıl Kurulur?
Excel Interop Kurulumu
Excel Interop, bir NuGet paketi olarak gönderilir. Projenizde aşağıdakilerden birini çalıştırın:
Install-Package Microsoft.Office.Interop.Excel
dotnet add package Microsoft.Office.Interop.Excel
Install-Package Microsoft.Office.Interop.Excel
dotnet add package Microsoft.Office.Interop.Excel
Paketin tek basina yeterli olmadigini unutmayin -- hedef makinede uyumlu bir Microsoft Excel surumu yüklü ve doğru bir şekilde lisanslanmış olmalıdır. Bu bağımlılık, çoğu sunucu, konteyner ve bulut senaryolarını ele gecer.

IronXL Kurulumu
IronXL'yi NuGet üzerinden yükleyin ek sistem gereklilikleri olmadan:
Install-Package IronXl.Excel
dotnet add package IronXl.Excel
Install-Package IronXl.Excel
dotnet add package IronXl.Excel
Yukleme işlemi sonrası, hemen her plateforme .NET'i destekleyen Excel dosyalarını okumaya ve yazmaya başlayabilirsiniz. Office lisansı gerekmez, COM kaydı gerekmez, sunucu yapılandırması gerekmez. IronXL yükleme kılavuzu online yükleme ve proje referans kurulumları dahil olmak üzere ek seçenekleri sunar.

C# Interop ile Excel'de Nasıl Pivot Tablo Oluşturulur?
Interop özet tablo iş akışı katı bir sırayı takip eder: bir kaynak aralığından özet önbellek oluşturun, ardından ayrı bir çalışma sayfasında bir PivotTable nesnesi oluşturun, ardından alan yönelimlerini yapılandırın. Aşağıdaki örnek, .NET 10 ile uyumlu üst düzey C# ifadelerini kullanır:
using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
// Launch Excel and set up workbooks
var excelApp = new Excel.Application();
excelApp.Visible = false;
var workbook = excelApp.Workbooks.Add();
var dataSheet = (Excel.Worksheet)workbook.Worksheets[1];
dataSheet.Name = "SalesData";
var pivotSheet = (Excel.Worksheet)workbook.Worksheets.Add();
pivotSheet.Name = "Pivot";
// Populate header row
dataSheet.Cells[1, 1] = "Product";
dataSheet.Cells[1, 2] = "Region";
dataSheet.Cells[1, 3] = "Sales";
// Add sample data rows
object[,] rows = {
{ "Laptop", "Hayırrth", 1200 },
{ "Laptop", "South", 1500 },
{ "Phone", "Hayırrth", 800 },
{ "Phone", "South", 950 },
{ "Tablet", "East", 600 },
{ "Tablet", "West", 750 },
{ "Monitor", "Hayırrth", 400 },
{ "Monitor", "South", 500 },
{ "Keyboard", "East", 300 },
};
for (int i = 0; i < rows.GetLength(0); i++)
{
dataSheet.Cells[i + 2, 1] = rows[i, 0];
dataSheet.Cells[i + 2, 2] = rows[i, 1];
dataSheet.Cells[i + 2, 3] = rows[i, 2];
}
// Build pivot cache from source range
Excel.Range dataRange = dataSheet.Range["A1:C10"];
Excel.PivotCache pivotCache = workbook.PivotCaches().Create(
Excel.XlPivotTableSourceType.xlDatabase, dataRange);
// Create the PivotTable on the pivot sheet
Excel.PivotTables pivotTables = (Excel.PivotTables)pivotSheet.PivotTables();
Excel.PivotTable pivotTable = pivotTables.Add(
pivotCache, pivotSheet.Range["A3"], "SalesPivot");
// Assign field orientations
((Excel.PivotField)pivotTable.PivotFields("Product")).Orientation =
Excel.XlPivotFieldOrientation.xlRowField;
((Excel.PivotField)pivotTable.PivotFields("Region")).Orientation =
Excel.XlPivotFieldOrientation.xlColumnField;
((Excel.PivotField)pivotTable.PivotFields("Sales")).Orientation =
Excel.XlPivotFieldOrientation.xlDataField;
// Enable grand totals
pivotTable.RowGrand = true;
pivotTable.ColumnGrand = true;
// Save and close
workbook.SaveAs(@"C:\output\pivot_interop.xlsx");
workbook.Close(false);
excelApp.Quit();
// Release every COM object -- skipping any of these causes Excel to stay in memory
Marshal.ReleaseComObject(pivotTable);
Marshal.ReleaseComObject(pivotTables);
Marshal.ReleaseComObject(pivotCache);
Marshal.ReleaseComObject(dataRange);
Marshal.ReleaseComObject(pivotSheet);
Marshal.ReleaseComObject(dataSheet);
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(excelApp);
using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
// Launch Excel and set up workbooks
var excelApp = new Excel.Application();
excelApp.Visible = false;
var workbook = excelApp.Workbooks.Add();
var dataSheet = (Excel.Worksheet)workbook.Worksheets[1];
dataSheet.Name = "SalesData";
var pivotSheet = (Excel.Worksheet)workbook.Worksheets.Add();
pivotSheet.Name = "Pivot";
// Populate header row
dataSheet.Cells[1, 1] = "Product";
dataSheet.Cells[1, 2] = "Region";
dataSheet.Cells[1, 3] = "Sales";
// Add sample data rows
object[,] rows = {
{ "Laptop", "Hayırrth", 1200 },
{ "Laptop", "South", 1500 },
{ "Phone", "Hayırrth", 800 },
{ "Phone", "South", 950 },
{ "Tablet", "East", 600 },
{ "Tablet", "West", 750 },
{ "Monitor", "Hayırrth", 400 },
{ "Monitor", "South", 500 },
{ "Keyboard", "East", 300 },
};
for (int i = 0; i < rows.GetLength(0); i++)
{
dataSheet.Cells[i + 2, 1] = rows[i, 0];
dataSheet.Cells[i + 2, 2] = rows[i, 1];
dataSheet.Cells[i + 2, 3] = rows[i, 2];
}
// Build pivot cache from source range
Excel.Range dataRange = dataSheet.Range["A1:C10"];
Excel.PivotCache pivotCache = workbook.PivotCaches().Create(
Excel.XlPivotTableSourceType.xlDatabase, dataRange);
// Create the PivotTable on the pivot sheet
Excel.PivotTables pivotTables = (Excel.PivotTables)pivotSheet.PivotTables();
Excel.PivotTable pivotTable = pivotTables.Add(
pivotCache, pivotSheet.Range["A3"], "SalesPivot");
// Assign field orientations
((Excel.PivotField)pivotTable.PivotFields("Product")).Orientation =
Excel.XlPivotFieldOrientation.xlRowField;
((Excel.PivotField)pivotTable.PivotFields("Region")).Orientation =
Excel.XlPivotFieldOrientation.xlColumnField;
((Excel.PivotField)pivotTable.PivotFields("Sales")).Orientation =
Excel.XlPivotFieldOrientation.xlDataField;
// Enable grand totals
pivotTable.RowGrand = true;
pivotTable.ColumnGrand = true;
// Save and close
workbook.SaveAs(@"C:\output\pivot_interop.xlsx");
workbook.Close(false);
excelApp.Quit();
// Release every COM object -- skipping any of these causes Excel to stay in memory
Marshal.ReleaseComObject(pivotTable);
Marshal.ReleaseComObject(pivotTables);
Marshal.ReleaseComObject(pivotCache);
Marshal.ReleaseComObject(dataRange);
Marshal.ReleaseComObject(pivotSheet);
Marshal.ReleaseComObject(dataSheet);
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(excelApp);
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Runtime.InteropServices
' Launch Excel and set up workbooks
Dim excelApp As New Excel.Application()
excelApp.Visible = False
Dim workbook As Excel.Workbook = excelApp.Workbooks.Add()
Dim dataSheet As Excel.Worksheet = CType(workbook.Worksheets(1), Excel.Worksheet)
dataSheet.Name = "SalesData"
Dim pivotSheet As Excel.Worksheet = CType(workbook.Worksheets.Add(), Excel.Worksheet)
pivotSheet.Name = "Pivot"
' Populate header row
dataSheet.Cells(1, 1) = "Product"
dataSheet.Cells(1, 2) = "Region"
dataSheet.Cells(1, 3) = "Sales"
' Add sample data rows
Dim rows As Object(,) = {
{"Laptop", "Hayırrth", 1200},
{"Laptop", "South", 1500},
{"Phone", "Hayırrth", 800},
{"Phone", "South", 950},
{"Tablet", "East", 600},
{"Tablet", "West", 750},
{"Monitor", "Hayırrth", 400},
{"Monitor", "South", 500},
{"Keyboard", "East", 300}
}
For i As Integer = 0 To rows.GetLength(0) - 1
dataSheet.Cells(i + 2, 1) = rows(i, 0)
dataSheet.Cells(i + 2, 2) = rows(i, 1)
dataSheet.Cells(i + 2, 3) = rows(i, 2)
Next
' Build pivot cache from source range
Dim dataRange As Excel.Range = dataSheet.Range("A1:C10")
Dim pivotCache As Excel.PivotCache = workbook.PivotCaches().Create(
Excel.XlPivotTableSourceType.xlDatabase, dataRange)
' Create the PivotTable on the pivot sheet
Dim pivotTables As Excel.PivotTables = CType(pivotSheet.PivotTables(), Excel.PivotTables)
Dim pivotTable As Excel.PivotTable = pivotTables.Add(
pivotCache, pivotSheet.Range("A3"), "SalesPivot")
' Assign field orientations
CType(pivotTable.PivotFields("Product"), Excel.PivotField).Orientation =
Excel.XlPivotFieldOrientation.xlRowField
CType(pivotTable.PivotFields("Region"), Excel.PivotField).Orientation =
Excel.XlPivotFieldOrientation.xlColumnField
CType(pivotTable.PivotFields("Sales"), Excel.PivotField).Orientation =
Excel.XlPivotFieldOrientation.xlDataField
' Enable grand totals
pivotTable.RowGrand = True
pivotTable.ColumnGrand = True
' Save and close
workbook.SaveAs("C:\output\pivot_interop.xlsx")
workbook.Close(False)
excelApp.Quit()
' Release every COM object -- skipping any of these causes Excel to stay in memory
Marshal.ReleaseComObject(pivotTable)
Marshal.ReleaseComObject(pivotTables)
Marshal.ReleaseComObject(pivotCache)
Marshal.ReleaseComObject(dataRange)
Marshal.ReleaseComObject(pivotSheet)
Marshal.ReleaseComObject(dataSheet)
Marshal.ReleaseComObject(workbook)
Marshal.ReleaseComObject(excelApp)
Her COM sarmalayıcı eşleşen bir Marshal.ReleaseComObject çağrısı gerektirir. Bir referansın bile eksik olması, Excel işleminin arka planda kalmasına neden olur, bu da bellek ve dosya tutucularını tüketir. Bu temizlik yükü, tablo işlemlerinizin karmaşıklığı ile ölçeklenir.
IronXL ile Nasıl Aynı Sonuç Elde Edilir?
IronXL, Interop'un yaptığı gibi yerel pivot tablo API'si sunmaz -- Open XML pivot formatında yüzlerce XML özniteliği vardır ve çoğu iş gerekliliği daha güvenilir bir şekilde, normal C# ile yazılmış açık LINQ toplama ile karşılanır. Çıktı, pivot önbelleği yenilemek için Excel'e bağlı kalmadan, dosya açıldığında doğru bir şekilde yeniden hesaplanan temiz bir özet sayfasıdır.
using IronXL;
using System.Data;
// Create workbook and populate source data
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet dataSheet = workbook.CreateWorkSheet("SalesData");
dataSheet["A1"].Value = "Product";
dataSheet["B1"].Value = "Region";
dataSheet["C1"].Value = "Sales";
object[,] rows = {
{ "Laptop", "Hayırrth", 1200 },
{ "Laptop", "South", 1500 },
{ "Phone", "Hayırrth", 800 },
{ "Phone", "South", 950 },
{ "Tablet", "East", 600 },
{ "Tablet", "West", 750 },
{ "Monitor", "Hayırrth", 400 },
{ "Monitor", "South", 500 },
{ "Keyboard", "East", 300 },
};
for (int i = 0; i < rows.GetLength(0); i++)
{
dataSheet[$"A{i + 2}"].Value = rows[i, 0];
dataSheet[$"B{i + 2}"].Value = rows[i, 1];
dataSheet[$"C{i + 2}"].Value = rows[i, 2];
}
// Aggregate data with LINQ -- equivalent to a pivot table row/column/value layout
DataTable table = dataSheet["A1:C10"].ToDataTable(true);
var summary = table.AsEnumerable()
.GroupBy(row => row.Field<string>("Product"))
.Select((group, idx) => new
{
Product = group.Key,
TotalSales = group.Sum(r => Convert.ToDecimal(r["Sales"])),
RegionCount = group.Select(r => r.Field<string>("Region")).Distinct().Count(),
RowIndex = idx + 2
})
.OrderByDescending(x => x.TotalSales);
// Write the summary sheet
WorkSheet summarySheet = workbook.CreateWorkSheet("Summary");
summarySheet["A1"].Value = "Product";
summarySheet["B1"].Value = "Total Sales";
summarySheet["C1"].Value = "Regions";
foreach (var item in summary)
{
summarySheet[$"A{item.RowIndex}"].Value = item.Product;
summarySheet[$"B{item.RowIndex}"].Value = (double)item.TotalSales;
summarySheet[$"C{item.RowIndex}"].Value = item.RegionCount;
}
// Apply currency format to the sales column
summarySheet["B:B"].FormatString = "$#,##0.00";
// Bold the header row
summarySheet["A1:C1"].Style.Font.Bold = true;
// Save -- no COM cleanup needed
workbook.SaveAs(@"C:\output\analysis_ironxl.xlsx");
using IronXL;
using System.Data;
// Create workbook and populate source data
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet dataSheet = workbook.CreateWorkSheet("SalesData");
dataSheet["A1"].Value = "Product";
dataSheet["B1"].Value = "Region";
dataSheet["C1"].Value = "Sales";
object[,] rows = {
{ "Laptop", "Hayırrth", 1200 },
{ "Laptop", "South", 1500 },
{ "Phone", "Hayırrth", 800 },
{ "Phone", "South", 950 },
{ "Tablet", "East", 600 },
{ "Tablet", "West", 750 },
{ "Monitor", "Hayırrth", 400 },
{ "Monitor", "South", 500 },
{ "Keyboard", "East", 300 },
};
for (int i = 0; i < rows.GetLength(0); i++)
{
dataSheet[$"A{i + 2}"].Value = rows[i, 0];
dataSheet[$"B{i + 2}"].Value = rows[i, 1];
dataSheet[$"C{i + 2}"].Value = rows[i, 2];
}
// Aggregate data with LINQ -- equivalent to a pivot table row/column/value layout
DataTable table = dataSheet["A1:C10"].ToDataTable(true);
var summary = table.AsEnumerable()
.GroupBy(row => row.Field<string>("Product"))
.Select((group, idx) => new
{
Product = group.Key,
TotalSales = group.Sum(r => Convert.ToDecimal(r["Sales"])),
RegionCount = group.Select(r => r.Field<string>("Region")).Distinct().Count(),
RowIndex = idx + 2
})
.OrderByDescending(x => x.TotalSales);
// Write the summary sheet
WorkSheet summarySheet = workbook.CreateWorkSheet("Summary");
summarySheet["A1"].Value = "Product";
summarySheet["B1"].Value = "Total Sales";
summarySheet["C1"].Value = "Regions";
foreach (var item in summary)
{
summarySheet[$"A{item.RowIndex}"].Value = item.Product;
summarySheet[$"B{item.RowIndex}"].Value = (double)item.TotalSales;
summarySheet[$"C{item.RowIndex}"].Value = item.RegionCount;
}
// Apply currency format to the sales column
summarySheet["B:B"].FormatString = "$#,##0.00";
// Bold the header row
summarySheet["A1:C1"].Style.Font.Bold = true;
// Save -- no COM cleanup needed
workbook.SaveAs(@"C:\output\analysis_ironxl.xlsx");
Imports IronXL
Imports System.Data
Imports System.Linq
' Create workbook and populate source data
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim dataSheet As WorkSheet = workbook.CreateWorkSheet("SalesData")
dataSheet("A1").Value = "Product"
dataSheet("B1").Value = "Region"
dataSheet("C1").Value = "Sales"
Dim rows As Object(,) = {
{"Laptop", "Hayırrth", 1200},
{"Laptop", "South", 1500},
{"Phone", "Hayırrth", 800},
{"Phone", "South", 950},
{"Tablet", "East", 600},
{"Tablet", "West", 750},
{"Monitor", "Hayırrth", 400},
{"Monitor", "South", 500},
{"Keyboard", "East", 300}
}
For i As Integer = 0 To rows.GetLength(0) - 1
dataSheet($"A{i + 2}").Value = rows(i, 0)
dataSheet($"B{i + 2}").Value = rows(i, 1)
dataSheet($"C{i + 2}").Value = rows(i, 2)
Next
' Aggregate data with LINQ -- equivalent to a pivot table row/column/value layout
Dim table As DataTable = dataSheet("A1:C10").ToDataTable(True)
Dim summary = table.AsEnumerable() _
.GroupBy(Function(row) row.Field(Of String)("Product")) _
.Select(Function(group, idx) New With {
.Product = group.Key,
.TotalSales = group.Sum(Function(r) Convert.ToDecimal(r("Sales"))),
.RegionCount = group.Select(Function(r) r.Field(Of String)("Region")).Distinct().Count(),
.RowIndex = idx + 2
}) _
.OrderByDescending(Function(x) x.TotalSales)
' Write the summary sheet
Dim summarySheet As WorkSheet = workbook.CreateWorkSheet("Summary")
summarySheet("A1").Value = "Product"
summarySheet("B1").Value = "Total Sales"
summarySheet("C1").Value = "Regions"
For Each item In summary
summarySheet($"A{item.RowIndex}").Value = item.Product
summarySheet($"B{item.RowIndex}").Value = CDbl(item.TotalSales)
summarySheet($"C{item.RowIndex}").Value = item.RegionCount
Next
' Apply currency format to the sales column
summarySheet("B:B").FormatString = "$#,##0.00"
' Bold the header row
summarySheet("A1:C1").Style.Font.Bold = True
' Save -- no COM cleanup needed
workbook.SaveAs("C:\output\analysis_ironxl.xlsx")
Serbest bırakılacak COM nesneleri yok, kapatılacak Excel işlemi yok ve yönetilecek Office lisansı yok. Aynı kod, değişiklik yapılmadan Linux, macOS ve Windows'ta derlenip çalıştırılır. Toplama API'si hakkında daha fazla bilgi için, IronXL Çalışma Sayfası dokümantasyonu adresini ziyaret edin.
Çıktı


Dağıtım ve Bakımda Temel Farklar Nelerdir?
Dağıtım Gereksinimleri
Interop tabanli bir uygulamayi dağıtmak, hedef ortamin Windows calistigini, dogru Office versiyonunun yüklü oldugunu ve sunucuda COM otomasyon izinlerinin ayarlandığını doğrulamayi icerir. Bulut tabanli ortamlarda ve kutulamis calişma yükleri tipik olarak bu gereksinimleri karsılayamaz, bu önemli ölçüde maliyeti artırır.
IronXL'nin bu tür kisitlamalari yoktur. NuGet paketini ekleyin, hedef çerçeveyi .NET 6 veya daha yenisine ayarlayin ve uygulama herhangi bir ana makineye dağıtılır -- Linux konteynerlerini, Azure Linux Uygulama Servisi'ni, AWS Lambda'yı ve yerel Windows sunucularını içerir. IronXL sistem gereksinimleri sayfası tam uyumluluk matrisini listeler.
Hata Yonetimi ve Hata Ayiklama
Interop hataları COM istisnaları (COMException) olarak görünür, bunları kullanıcıya görünür mesajlara dönüştürmek zordur. Yüklenen Ofis surumuyle Interop birimi arasında sürüm uyumsuzlukları başka bir hata modu ekler. Bu sorunları gidermek genellikle tam bir geliştirme makinesinde Ofis versiynunu yeniden üreterek mümkündür.
IronXL açıklayıcı mesajlarla standart System.Exception alt sınıflarını fırlatır. Dosya işlemlerini bir try-catch blok içerisine sarabilirsiniz ve COM hata kodlarına anlamadan anlamlı geribildirim sağlayabilirsiniz. IronXL sorun giderme kılavuzunda yaygın istisnalar ve çözumleri kapsanmiştir.
Bellek ve Performans
COM nesneleri yonetilmeyen belleği tutar. Kodunuz birçok çalışma sayfasını işler veya döngü içinde çalıştırılırsa, her bir referansı doğru bir şekilde serbest bırakmamak zamanla bellek artışına neden olur, bu da tespiti zor bir sorun olabilir. Interop, ayrıca, tek bir Excel penceresini yonettiği icin, dogal olarak tek iş parçacıklıdır.
IronXL, .NET çöple toplama ile desteklenen yonetilen nesneler kullanır. Nesneler kapsam dışına çıktıktan sonra bellek otomatik olarak geri kazanılır. Birden çok çalışma kitabını paralel olarak işlemek, paylaşılmış COM durumunu kilitlerle korumaya gerek olmadığından basittir.
İki Yaklaşım Arasında Nasıl Seçim Yapılır?
Doğru arac, iki kisitlamaya bağlıdır: kodun nerede çalıştığı ve yerel pivot tablo XML'in gerekli olup olmadığı.
Excel Interop'u seçin:
- İş yükü yalnızca Office'in zaten yüklü olduğu Windows masaüstü makinelerde çalışır
- Çıktı dosyasında tam yerel pivot tablo biçimlendirmesi (dilimleyiciler, gruplandırılmış tarih alanları, hesaplanan öğeler) gereklidir
- Mevcut bir Interop kod tabanını surduruyorsunuz ve kapsamlı bir yeniden yazımı haklı çıkarmaz
IronXL'yi seçin:
- Uygulama bir sunucu, konteyner veya bulut fonksiyonunda çalıştırılır
- Çapraz platform veya Linux dağıtımı gereklidir
- Bir Excel sürecine bağlı olmayan, birim testleriyle test edilebilir veri toplama mantığı istiyorsunuz
- Excel dosyalarını geniş ölçekte veya paralel olarak işlemeye ihtiyaçınız var
Çoğu yeni .NET 10 projesi icin, IronXL pratik varsayılan bir secimdir. IronXL kutuphanesi ayrıca C#'ta Excel dosyalarını okuma, grafikler oluşturma, hücre stilleri uygulama, formüllerle çalışma ve Excel verilerini DataTable'a ihraç etme konularını da kapsıyor -- bu da yığınınızdaki birden fazla kutuphaneye ihtiyaçı azaltır.

Veri Analizini Destekleyici Ek IronXL Özellikleri Nelerdir?
Temel toplamanın ötesinde, IronXL daha zengin veri analizi iş akışlarını destekleyen birkaç özelliğe sahiptir:
Veri Sıralama ve Filtreleme
Bir özeti yazmadan önce bir aralığı artan veya azalan sıraya göre sıralayabilirsiniz. Bu, cıktının her zaman veriyi tutarlı bir sırada sunmasını sağlarken, alt akış işlemeyi daha tahmin edilebilir hale getirir. IronXL sıralama dökümantasyonu için aralık düzeyinde sıralama seçeneklerini görün.
Koşullu Biçimlendirme Uygulama
Şartlı biçimlendirme kurallari programing yoluyla aşamaları veya eşikleri vurgulamak icin uygulayın. Örneğin, satışlar bir hedefin altına düştüğünde özet sayfasındaki hücreleri kırmızı renge boyayarak, kullanıcıların kuralları manuel olarak ayarlamasına gerek kalmadan bir bakışta görüş sağlar.
Varsayılan Excel Dosyalarını Okuma
Kaynak veri bir veritabanı yerine mevcut bir e-tablodan geliyorsa, doğrudan WorkBook.Load ile yükleyebilirsiniz:
using IronXL;
WorkBook existing = WorkBook.Load(@"C:\data\sales_report.xlsx");
WorkSheet sheet = existing.WorkSheets[0];
// Read column C starting at row 2
var salesValues = sheet["C2:C100"]
.Where(cell => cell.Value != null && cell.Value.ToString() != string.Empty)
.Select(cell => cell.DecimalValue)
.ToList();
decimal total = salesValues.Sum();
Console.WriteLine($"Total sales from file: {total:C}");
using IronXL;
WorkBook existing = WorkBook.Load(@"C:\data\sales_report.xlsx");
WorkSheet sheet = existing.WorkSheets[0];
// Read column C starting at row 2
var salesValues = sheet["C2:C100"]
.Where(cell => cell.Value != null && cell.Value.ToString() != string.Empty)
.Select(cell => cell.DecimalValue)
.ToList();
decimal total = salesValues.Sum();
Console.WriteLine($"Total sales from file: {total:C}");
Imports IronXL
Dim existing As WorkBook = WorkBook.Load("C:\data\sales_report.xlsx")
Dim sheet As WorkSheet = existing.WorkSheets(0)
' Read column C starting at row 2
Dim salesValues = sheet("C2:C100") _
.Where(Function(cell) cell.Value IsNot Nothing AndAlso cell.Value.ToString() <> String.Empty) _
.Select(Function(cell) cell.DecimalValue) _
.ToList()
Dim total As Decimal = salesValues.Sum()
Console.WriteLine($"Total sales from file: {total:C}")
Bu desen .xlsx, .xls, .csv ve IronXL tarafından desteklenen diğer formatlar için çalışır. Desteklenen formatlar hakkindaki detaylar IronXL dosya formati dokümantasyonu'nda yer almaktadir.
CSV'ye Disariya Aktarma
Ozet calisma sayfasi oluşturduktan sonra, Excel'i kabul etmeyen sonraki sistemler icin CSV olarak disariya aktarabilirsiniz:
workbook.SaveAsCsv(@"C:\output\summary.csv");
workbook.SaveAsCsv(@"C:\output\summary.csv");
workbook.SaveAsCsv("C:\output\summary.csv")
Bu, son tuketici bir veri tabani aktarma araci veya veri ambari yukleyicisi oldugunda ETL boru hatlarinda özellikle kullanislidir.
IronXL ile Ücretsiz Başlama Yolculugunuz Nasıl Başlar?
IronXL, bir abonelik taahhut etmeden tüm özellik setini degerlendirmenize olanak taniyan ücretsiz deneme lisansi altinda mevcuttur. Deneme surumu, uretim lisans anahtari uygulandiginda kaldirilan cikti dosyalarina bir filigran ekler.
Bir lisans anahtarini kodda etkinlestirmek icin, herhangi bir IronXL işleminden once ayarlayin:
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
Imports IronXl
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
Anahtarı bir ortam değişkeni (IRONXL_LICENSEKEY) veya ASP.NET Core projelerinde appsettings.json aracılığıyla da ayarlayabilirsiniz. IronXL lisanslama sayfasi, ekip ve organizasyon seçenekleri dahil olmak üzere mevcut tüm kademeleri aciklar.
Uretim dağıtimlari icin ASP.NET Core, Azure Functions ve Docker'i kapsayan örnekler icin IronXL dağıtim dokümanina ve daha genis IronXL eğitim kutuphanesine goz atin.

Bir Sonraki Adimi Nasıl Atarsiniz?
C# dilinde Excel pivottablelar, Office bagimliligi ve COM karmasasi anlamina gelmek zorunda degildir. IronXL ile, herhangi bir platformda calisan, bellek yonetimini otomatik olarak yapan ve birim testi cerceveleri ve CI/CD boru hatlariyla dogal olarak entegre olan duz .NET kodu yazabilirsiniz.
Ücretsiz IronXL deneme surumunu indirin ve bu kılavuzdaki örnekleri kendi verilerinizle deneyin. Sorularla karsilasirsaniz, hem deneme hem de lisansli kullanicilar icin mevcut olan IronXL topluluk forumu ve destek portali vardir. Dağıtima hazır oldugunuzda, ekip buyuklugunuze ve kullanim hacminize uygun plani bulmak icin lisanslama seçeneklerine bakin.
Sıkça Sorulan Sorular
Pivot tabloları oluştururken IronXL kullanmanın Excel Interop'a göre avantajı nedir?
IronXL, Excel dosyalarında pivot tablolar oluşturmanın geleneksel Excel Interop'a göre daha modern ve verimli bir yolunu sunar. Süreci basitleştirir ve gerekli standart kod miktarını azaltır.
IronXL kullanarak, C# ile Excel'de pivot tablo oluşturabilir miyim?
Evet, IronXL, C# kullanarak Excel'de pivot tablolar oluşturmak için basit bir yöntem sunar. Geliştiricilerin Excel dosyalarını kolayca yönetmelerini sağlar ve Excel Interop'a ihtiyaç duymalarını ortadan kaldırır.
IronXL, .NET uygulamaları ile uyumlu mu?
IronXL, .NET uygulamaları ile tamamen uyumlu olup C# projelerine Excel işlevselliğini entegre etmek isteyen geliştiriciler için mükemmel bir seçimdir.
IronXL'nin sistemde Excel yüklü olmasını gerektirir mi?
Hayır, IronXL, Excel Interop'un gerektiğini belirten Excel yüklü olmasına gerek duymadan çalışır ve bu, önemli bir avantajdır.
IronXL, pivot tablolar oluşturma sürecini nasıl basitleştirir?
IronXL, kullanıcı dostu bir API sağlayarak geniş kapsamlı standart kod ihtiyaçını azaltır, bu da geliştirme sürecini daha hızlı ve daha verimli hale getirir.
IronXL kullanmanın sistem gereksinimleri nelerdir?
IronXL, .NET framework uyumlu bir ortam gerektirir ve Microsoft Excel'in yüklenmesini gerektirmeyerek dağıtımı basitleştirir ve bağımlılıkları azaltır.
IronXL, büyük Excel dosyalarını verimli bir şekilde yönetebilir mi?
Evet, IronXL, büyük Excel dosyalarını verimli bir şekilde işlemek için tasarlanmıştır ve büyük miktarda veri işlenmesi gereken iş uygulamalarına uygundur.
IronXL'nin Excel Interop'a göre öğrenme eğrisi var mı?
IronXL, sezgisel ve kolay öğrenilebilir olması için tasarlanmıştır, kapsamlı dokümantasyon ve örnekler sunar, bu da onu daha karmaşık olan Excel Interop ile kıyaslandığında daha kolay benimsemeyi sağlar.
IronXL, pivot tablo oluşturmanın dışında hangi Excel işlemlerini gerçekleştirebilir?
IronXL, Excel dosyalarını okuma ve yazma, hücreleri biçimlendirme ve formül uygulama gibi çok çeşitli Excel işlemlerini gerçekleştirebilir.
IronXL, pivot tabloları Excel dışında formatlara aktarabilir mi?
IronXL, ağırlıklı olarak Excel işlemlerine odaklanmış olsa da, proje gereksinimlerinize bağlı olarak verileri CSV ve PDF gibi diğer formatlara aktarmayı da destekler.




