IRONSOFTWAREHOME
IRONXL KULLANARAK

C#'da Excel Pivot Tablosu Nasıl Oluşturulur

Curtis Chau
Curtis Chau
Updated: 21 Nisan 2026

Excel pivot tablosuyla programatik olarak çalışmak, kaynak veriyi analiz etme ve hesaplama gereksinimi olan iş uygulamalarında yaygın bir gerekliliktir. Microsoft'un Excel Interop'u bir Excel dosyasına pivot tablo oluşturmanın geleneksel yöntemi olmuştur, ancak IronXL gibi modern çözümler önemli avantajlar sunar. Bu rehber, her iki yöntemi de pratik örneklerle detaylandırarak, C# Interop kullanarak Excel'de bir pivot tablo oluşturmanıza veya daha iyi bir alternatif seçmenize yardımcı olur.

İki Yaklaşımı Anlamak

Excel Interop Nedir?

Excel Interop, Microsoft Excel'i doğrudan C# üzerinden kontrol etmek için COM (Bileşen Nesne Modeli) kullanır. Sistemde Office'in kurulu olmasını gerektirir ve esasen bir kullanıcı uygulama ile etkileşime giriyormuş gibi Excel'i otomatikleştirir. Her çalışma sayfası, çalışma kitabı ve hücre, kodla manipüle edebileceğiniz bir nesne haline gelir.

IronXL Nedir?

IronXL, Microsoft Office gerektirmeden Excel dosyalarını okuyabilen, düzenleyebilen ve oluşturabilen bağımsız bir .NET kütüphanesidir. Modern dağıtım senaryoları için ideal olan Windows, Linux, macOS ve Docker konteynerlerinde çalışır. COM interop yükü olmadan verileri açabilir, kaydedebilir ve dışa aktarabilirsiniz.

Çevrenizi Kurma

Excel Interop İçin

PM > Install-Package Microsoft.Office.Interop.Excel

IronXL İçin

PM > Install-Package IronXL.Excel

Alternatif olarak, NuGet Paket Yöneticisi UI'yi kullanarak "IronXL.Excel" arayın ve yükle'ye tıklayın. .NET CLI ile komut argümanları aracılığıyla da kurabilir veya doğrudan GitHub'dan referans verebilirsiniz.

Her iki kütüphane de NuGet aracılığıyla mevcuttur. Excel Interop'un tam Microsoft Office kurulumu gerektirdiğini, IronXL'ın ise bağımsız çalıştığını unutmayın. Devam etmeden önce, sistem gereksinimlerini karşıladığınızdan emin olun.

C# Interop ile Programatik Olarak Excel Pivot Tablosu Oluşturma

İşte geleneksel Interop yaklaşımını kullanarak programatik olarak bir pivot tablo oluşturmanın tam bir örneği:

using Excel = Microsoft.Office.Interop.Excel;
class Program
{
    static void Main(string[] args)
    {
        // Create Excel application instance
        var excelApp = new Excel.Application();
        var workbook = excelApp.Workbooks.Add();
                    var dataSheet = (Excel.Worksheet)workbook.Worksheets[1];
            var pivotSheet = (Excel.Worksheet)workbook.Worksheets.Add();
            // Add header row and sample data
            dataSheet.Cells[1, 1] = "Product";
            dataSheet.Cells[1, 2] = "Region";
            dataSheet.Cells[1, 3] = "Sales";
            // ... populate data rows with values
            // Add sample data rows
            dataSheet.Cells[2, 1] = "Laptop";
            dataSheet.Cells[2, 2] = "North";
            dataSheet.Cells[2, 3] = 1200;
            dataSheet.Cells[3, 1] = "Laptop";
            dataSheet.Cells[3, 2] = "South";
            dataSheet.Cells[3, 3] = 1500;
            dataSheet.Cells[4, 1] = "Phone";
            dataSheet.Cells[4, 2] = "North";
            dataSheet.Cells[4, 3] = 800;
            dataSheet.Cells[5, 1] = "Phone";
            dataSheet.Cells[5, 2] = "South";
            dataSheet.Cells[5, 3] = 950;
            dataSheet.Cells[6, 1] = "Tablet";
            dataSheet.Cells[6, 2] = "East";
            dataSheet.Cells[6, 3] = 600;
            dataSheet.Cells[7, 1] = "Tablet";
            dataSheet.Cells[7, 2] = "West";
            dataSheet.Cells[7, 3] = 750;
            dataSheet.Cells[8, 1] = "Monitor";
            dataSheet.Cells[8, 2] = "North";
            dataSheet.Cells[8, 3] = 400;
            dataSheet.Cells[9, 1] = "Monitor";
            dataSheet.Cells[9, 2] = "South";
            dataSheet.Cells[9, 3] = 500;
            dataSheet.Cells[10, 1] = "Keyboard";
            dataSheet.Cells[10, 2] = "East";
            dataSheet.Cells[10, 3] = 300;
            // Create pivot cache from source data range
            Excel.Range dataRange = dataSheet.Range["A1:C10"];
            Excel.PivotCache pivotCache = workbook.PivotCaches().Create(
                Excel.XlPivotTableSourceType.xlDatabase, dataRange);
            // Create PivotTable at specific location
            Excel.PivotTables pivotTables = (Excel.PivotTables)pivotSheet.PivotTables();
            Excel.PivotTable pivotTable = pivotTables.Add(
                pivotCache, pivotSheet.Range["A3"], "SalesPivot");
            // Configure pivot table fields - row and column headers
            ((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;
            // Configure grand totals and formatting
            pivotTable.RowGrand = true;
            pivotTable.ColumnGrand = true;
            // Save the Excel file
            workbook.SaveAs("pivot_interop.xlsx");
            workbook.Close();
            excelApp.Quit();
            // Critical: Release COM objects to avoid errors
            #if WINDOWS
            Marshal.ReleaseComObject(pivotTable);
            Marshal.ReleaseComObject(pivotSheet);
            Marshal.ReleaseComObject(dataSheet);
            Marshal.ReleaseComObject(workbook);
            Marshal.ReleaseComObject(excelApp);
            #endif
    }
}

Bu kod, bir Excel uygulaması oluşturur, başlık satırı dâhil kaynak verilerle bir çalışma sayfası ekler, bir pivot önbellek oluşturur, PivotTable nesnesini inşa eder ve alan yönelimini yapılandırır. Temizlik bölümü kritik önem taşır - COM nesnelerinin bırakılmaması bellek sızıntılarına neden olur. Her hücre, aralık ve çalışma sayfası, çalışma hatalarını önlemek için uygun şekilde bertaraf edilmelidir.

IronXL Alternatif Yaklaşımı

IronXL, Excel dosya formatı ile doğrudan çalışarak farklı bir yaklaşım benimser. Benzer analiz sonuçlarını programatik olarak nasıl elde edeceğiniz aşağıda açıklanmıştır:

using IronXL;
using System.Linq;
class Program 
{
    static void Main(string[] args)
    {
        // Create workbook and add worksheet with data
        WorkBook workbook = WorkBook.Create();
        WorkSheet sheet = workbook.CreateWorkSheet("Data");
        // Add header row to define column structure
        sheet["A1"].Value = "Product";
        sheet["B1"].Value = "Region";
        sheet["C1"].Value = "Sales";
        // Add sample data to cells
        sheet["A2"].Value = "Widget";
        sheet["B2"].Value = "North";
        sheet["C2"].Value = 1500;
        // ... continue to add more data rows
        sheet["A3"].Value = "Laptop";
        sheet["B3"].Value = "South";
        sheet["C3"].Value = 1500;
        sheet["A4"].Value = "Phone";
        sheet["B4"].Value = "North";
        sheet["C4"].Value = 800;
        sheet["A5"].Value = "Phone";
        sheet["B5"].Value = "South";
        sheet["C5"].Value = 950;
        sheet["A6"].Value = "Tablet";
        sheet["B6"].Value = "East";
        sheet["C6"].Value = 600;
        sheet["A7"].Value = "Tablet";
        sheet["B7"].Value = "West";
        sheet["C7"].Value = 750;
        sheet["A8"].Value = "Monitor";
        sheet["B8"].Value = "North";
        sheet["C8"].Value = 400;
        sheet["A9"].Value = "Monitor";
        sheet["B9"].Value = "South";
        sheet["C9"].Value = 500;
        sheet["A10"].Value = "Keyboard";
        sheet["B10"].Value = "East";
        sheet["C10"].Value = 300;
        // Create summary analysis worksheet
        var summarySheet = workbook.CreateWorkSheet("Summary");
        // Group and calculate aggregated data
        var data = sheet["A1:C10"].ToDataTable(true);
        var productSummary = data.AsEnumerable()
            .GroupBy(row => row.Field<string>("Product"))
            .Select((group, index) => new {
                Product = group.Key,
                TotalSales = group.Sum(r => Convert.ToDecimal(r["Sales"])),
                Count = group.Count(),
                RowIndex = index + 2
            });
        // Write column headers for summary
        summarySheet["A1"].Value = "Product Summary";
        summarySheet["A2"].Value = "Product";
        summarySheet["B2"].Value = "Total Sales";
        summarySheet["C2"].Value = "Count";
        // Export results to cells
        foreach (var item in productSummary)
        {
            summarySheet[$"A{item.RowIndex + 1}"].Value = item.Product;
            summarySheet[$"B{item.RowIndex + 1}"].Value = item.TotalSales;
            summarySheet[$"C{item.RowIndex + 1}"].Value = item.Count;
        }
        // Apply number formatting and style
        summarySheet["B:B"].FormatString = "$#,##0.00";
        // Save the xlsx file
        workbook.SaveAs("analysis_ironxl.xlsx");
    }
}

Bu IronXL örneği, bir çalışma kitabı oluşturmanın, çalışma sayfaları eklemenin, hücreleri verilerle doldurmanın ve toplama analizi gerçekleştirmenin nasıl yapılacağını gösterir. Kod, ürüne göre verileri gruplandırır ve toplamları ve sayıları hesaplayarak bir özet rapor oluşturur. Yönetilmesi gereken COM nesneleri yoktur ve yöntemler bellek otomatik olarak yöneten standart .NET koleksiyonlarıdır.

Çıktı

C# ile Excel Pivot Tablosu Nasıl Oluşturulur: Şekil 6 - IronXL Çıktısı

C# ile Excel Pivot Tablosu Nasıl Oluşturulur: Şekil 7 - Özet Çıktı

Önemli Farklar ve Dikkat Edilmesi Gerekenler

Dağıtım Gereklilikleri

Excel Interop gerektirir:

  • Geçerli lisansa sahip Microsoft Excel kurulumu

  • Windows işletim sistemi

  • Uygun COM izinleri ve ayarları

  • Office otomasyonu için sunucu yapılandırması IronXL gereksinimleri:

  • Yalnızca IronXL kütüphane paketi

  • .NET'i destekleyen herhangi bir platformda çalışır

  • Office kurulumu veya lisansı gerekmez

  • Basitleştirilmiş dağıtım süreci

C# ile Excel Pivot Tablosu Nasıl Oluşturulur: Şekil 8 - Özellikler

Kod Kalitesi ve Bakım

Interop, bellek sızıntılarını ve hataları önlemek için COM nesnelerinin dikkatlice yönetilmesini gerektirir. Oluşturulan her Excel nesnesi, doğru yöntemler kullanılarak açıkça bırakılmalıdır. IronXL, kaynak sorunlarını azaltmak için otomatik çöp toplama ile standart .NET nesneleri kullanır.

Hata Yönetimi

Interop ile, hatalar genellikle Excel kullanılabilirliği, sürüm farklılıkları veya COM hataları ile ilişkilidir. IronXL hataları standart .NET istisnalarıdır, bu da hata ayıklamayı daha kolay hale getirir. COM'a özgü sorunlar hakkında endişelenmeden tanıdık try-catch kalıplarına güvenebilirsiniz.

En İyi Uygulamalar ve Tavsiyeler

Excel Interop'u seçin:

  • Tüm biçimlendirme seçeneklerine sahip tam Excel pivot tablo özelliklerine ihtiyacınız varsa

  • Sistemde Excel'in bulunacağı garanti ediliyorsa

  • Yalnızca Windows masaüstü uygulamalarında çalışıyorsanız

  • Eski kod gereksinimlerine sahipseniz IronXL'u seçin:

  • Sunucu uygulamaları veya web çözümleri geliştiriyorsanız

  • Çapraz platform uyumluluğuna ihtiyaç duyuyorsanız

  • COM yükü olmadan güvenilir performans gerekiyorsa

  • Konteynerlere veya bulut ortamlarına dağıtıyorsanız

IronXL dokümantasyonu ile uygulama hakkında daha fazla ayrıntı öğrenebilirsiniz. Sorular veya destek için Iron Software ekibiyle iletişime geçin.

Sonuç

C# Interop, Excel'de pivot tablo işlevselliğine doğrudan erişim sağlayarak dağıtım sınırlamaları ve karmaşıklığı ile birlikte gelir. IronXL, Office kurulumunu veya lisanslamasını gerektirmeyen, herhangi bir yerden çalışabilen modern bir alternatif sunar.

Geliştiriciler, yeni uygulamalar oluştururken veya mevcut çözümleri modernize ederken, IronXL yaklaşımı COM Interop yükünü ortadan kaldırarak güçlü veri işleme yetenekleri sağlar. Excel verilerini okumanız, düzenlemeniz veya dışa aktarmanız gerekip gerekmediği konusunda, IronXL temiz bir çözüm sunar.

IronXL'ın ücretsiz denemesiyle başlayın farkı deneyimlemek için veya daha fazla örnek görmek için eğitimleri inceleyin. Dağıtıma hazır mısınız? Lisanslama seçeneklerini görüntüleyin, göreviniz için doğru paketi seçmek için.

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