IRONSOFTWAREHOME
IRONXL VERWENDEN

Wie man eine Excel Pivot-Tabelle in C# erstellt

Curtis Chau
Curtis Chau
Updated: 21. April 2026

Die Arbeit mit einer Excel-Pivottabelle programmatisch ist ein häufiges Erfordernis in Geschäftsanwendungen, die Quelldaten analysieren und berechnen müssen. Während Microsofts Excel Interop die traditionelle Methode war, eine Pivottabelle in einer Excel-Datei zu erstellen, bieten moderne Lösungen wie IronXL erhebliche Vorteile. Dieser Leitfaden beschreibt beide Methoden mit praktischen Beispielen, um Ihnen bei der Erstellung einer Pivot-Tabelle in Excel mit C# Interop zu helfen oder eine bessere Alternative zu wählen.

Verständnis der zwei Ansätze

Was ist Excel Interop?

Excel Interop verwendet COM (Component Object Model), um Microsoft Excel direkt über C# zu steuern. Es erfordert eine Office-Installation auf dem System und automatisiert Excel im Wesentlichen so, als ob ein Benutzer mit der Anwendung interagiert. Jedes Arbeitsblatt, jede Arbeitsmappe und jede Zelle wird damit zu einem Objekt, das Sie über Code manipulieren können.

Was ist IronXL?

IronXL ist eine eigenständige .NET-Bibliothek, die Excel-Dateien lesen, bearbeiten und erstellen kann, ohne Microsoft Office zu benötigen. Es funktioniert auf Windows, Linux, macOS und Docker-Containern, was es ideal für moderne Bereitstellungsszenarien macht. Sie können Daten öffnen, speichern und exportieren, ohne den Overhead von COM Interop.

Einrichten Ihrer Umgebung

Für Excel Interop

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

Für IronXL

PM > Install-Package IronXL.Excel

Alternativ können Sie den NuGet-Paket-Manager-UI verwenden, indem Sie nach "IronXL.Excel" suchen und auf Installieren klicken. Sie können auch über die .NET CLI mit Befehlsargumenten installieren oder es direkt von GitHub referenzieren.

Beide Bibliotheken sind über NuGet verfügbar. Beachten Sie, dass Excel Interop eine vollständige Microsoft Office-Installation erfordert, während IronXL unabhängig arbeitet. Bevor Sie fortfahren, stellen Sie sicher, dass Ihr System die Anforderungen erfüllt.

Erstellung einer Excel-Pivot-Tabelle programmatisch mit C# Interop

Hier ist ein vollständiges Beispiel, das zeigt, wie man mit dem traditionellen Interop-Ansatz programmatisch eine Pivottabelle erstellt:

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
    }
}

Dieser Code erstellt eine Excel-Anwendung, fügt ein Arbeitsblatt mit Quelldaten einschließlich einer Kopfzeile hinzu, erstellt einen Pivot-Cache, baut das PivotTable-Objekt und konfiguriert die Feldausrichtung. Der Bereinigungsteil ist entscheidend - das Versäumnis, COM-Objekte freizugeben, verursacht Speicherlecks. IronXL benötigt:

Der IronXL Alternative Ansatz

IronXL verfolgt einen anderen Ansatz, indem es direkt mit dem Excel-Dateiformat arbeitet. So erreichen Sie ähnliche Analysenergebnisse programmatisch:

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");
    }
}

Dieses IronXL-Beispiel zeigt, wie man eine Arbeitsmappe erstellt, Arbeitsblätter hinzufügt, Zellen mit Daten füllt und Aggregationsanalysen durchführt. Der Code gruppiert Daten nach Produkt und berechnet Summen und Zählungen, indem er einen Zusammenfassungsbericht erstellt. Es müssen keine COM-Objekte verwaltet werden, und die Methoden sind einfache .NET-Sammlungen, die automatisch den Speicher verwalten.

Ausgabe

So erstellen Sie eine Excel-Pivot-Tabelle in C#: Abbildung 6 - IronXL-Ausgabe

So erstellen Sie eine Excel-Pivot-Tabelle in C#: Abbildung 7 - Zusammenfassungsausgabe

Wichtige Unterschiede und Überlegungen

Bereitstellungsanforderungen

Excel Interop erfordert:

  • Microsoft Excel-Installation mit einer gültigen Lizenz

  • Windows-Betriebssystem

  • Ordentliche COM-Berechtigungen und -Einstellungen

  • Serverkonfiguration für Office-Automatisierung IronXL erfordert:

  • Nur das IronXL-Bibliothekspaket

  • Funktioniert auf jeder Plattform, die .NET unterstützt

  • Keine Office-Installation oder Lizenz erforderlich

  • Vereinfachter Bereitstellungsprozess

So erstellen Sie eine Excel-Pivot-Tabelle in C#: Abbildung 8 - Funktionen

Codequalität und Wartung

Interop umfasst das sorgfältige Verwalten von COM-Objekten, um Speicherlecks und Fehler zu vermeiden. Jedes erstellte Excel-Objekt muss explizit über die richtigen Methoden freigegeben werden. IronXL verwendet Standard-.NET-Objekte mit automatischer Garbage Collection, was das Risiko von Ressourcenproblemen reduziert.

Fehlerbehandlung

Mit Interop hängen Fehler oft mit der Verfügbarkeit von Excel, Versionsunterschieden oder COM-Ausfällen zusammen. IronXL-Fehler sind Standard-.NET-Ausnahmen, was das Debuggen erleichtert. Sie können sich auf vertraute Try-Catch-Muster verlassen, ohne sich um COM-spezifische Probleme kümmern zu müssen.

Beste Praktiken und Empfehlungen

Wählen Sie Excel Interop, wenn:

  • Sie genaue Excel-Pivottabellenfunktionen mit allen Formatierungsoptionen benötigen

  • Excel wird garantiert auf dem System verfügbar sein

  • Nur an Windows-Desktopanwendungen arbeiten

  • Legacy-Code-Anforderungen Wählen Sie IronXL, wenn:

  • Erstellung von Serveranwendungen oder Weblösungen

  • Erforderliche plattformübergreifende Kompatibilität

  • Zuverlässige Leistung ohne COM-Overhead erforderlich

  • Bereitstellung in Containern oder Cloud-Umgebungen

Besuchen Sie IronXL-Dokumentation, um mehr Details über die Implementierung zu erfahren. Für Fragen oder Unterstützung, kontaktieren Sie das Iron Software-Team.

Abschluss

Während C# Interop direkten Zugriff auf die Erstellung von Pivot-Tabellen in Excel bietet, bringt es Bereitstellungseinschränkungen und Komplexität mit sich. IronXL bietet eine moderne Alternative, die die Manipulation von Excel-Dateien vereinfacht und die Flexibilität bietet, überall zu laufen, wo .NET unterstützt wird.

Für Entwickler, die neue Anwendungen erstellen oder bestehende Lösungen modernisieren, eliminiert der Ansatz von IronXL den COM-Interop-Overhead, während leistungsstarke Datenmanipulationsfunktionen bereitgestellt werden. Ob Sie Daten in Excel lesen, bearbeiten oder exportieren müssen, IronXL liefert eine sauberere Lösung.

Starten Sie mit IronXLs kostenloser Testversion, um den Unterschied zu erleben oder erkunden Sie Tutorials, um weitere Beispiele zu sehen. Bereit zum Deployment? Sehen Sie sich die Lizenzierungsoptionen an, um das richtige Paket für Ihre Aufgabe zu wählen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
AWS-Logo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Azure (WebApps, Funktionen v3)
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Azure (WebApps, Funktionen v3)
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.