Zum Fußzeileninhalt springen
IRONXL VERWENDEN

Wie man Excel-Berichte in C# mit IronXL erstellt

Erstellen von Excel-Berichten in C# mit IronXL

Excel-Berichte in C# zu erstellen, ist ein grundlegendes Erfordernis in modernen Geschäfts- und .NET-Anwendungen. Egal, ob Sie Finanzberichte, Verkaufsanalysen oder Bestandsübersichten erstellen, die Automatisierung des Erstellungsprozesses von Excel-Dateien und Excel-Tabellen spart Stunden manueller Arbeit und reduziert Fehler.

IronXL bietet eine leistungsstarke, intuitive Lösung für Entwickler, um einen Excel-Bericht in C# zu erstellen, ohne dass Microsoft Office, MS Excel oder traditionelle Interop-Abhängigkeiten erforderlich sind. Im Gegensatz zu OLE-Automatisierung oder Ansätzen, die auf der Excel-Anwendung basieren, ermöglicht IronXL das Erzeugen von Excel-Arbeitsmappen und Excel-Daten direkt im Code mit nur einer Zeile, wo dies erforderlich ist. In diesem Leitfaden zeigen wir Ihnen, wie Sie mit IronXL Excel-Berichte erstellen können, komplett mit einfach zu befolgendem Beispielcode, den Sie leicht in Ihre eigenen Projekte implementieren können!

Was ist IronXL und warum sollte man es für die Generierung von Excel-Dateien verwenden?

IronXL ist eine .NET-Excel-Bibliothek, die es Entwicklern ermöglicht, Excel-Tabellen zu erstellen, zu lesen und Excel-Dateien direkt aus C#- oder Visual Basic-Quellcode zu bearbeiten. Im Gegensatz zu Microsoft Office Interop-Ansätzen, die sich auf die vollständige Excel-Anwendung oder das Reverse Engineering über Open XML SDK stützen, funktioniert IronXL in Windows-, Linux-, macOS- und Cloud-Umgebungen, ohne dass eine Excel-Installation oder Abhängigkeiten von Dritten erforderlich sind. Dies macht es ideal für serverseitige Excel-Berichte, automatisierte Workflows und Webanwendungen, die auf .NET Core oder dem .NET-Framework aufgebaut sind.

Für Teams, die von manuellen Excel-Prozessen, älteren Bibliotheken oder Open XML-Produktivitätstool-Workflows umsteigen müssen, die das Navigieren in verschiedenen XML-Namespaces erfordern, bietet IronXL eine intuitive API. Es unterstützt sowohl alte XLS-Dateien als auch moderne XLSX-Dateien, die im Wesentlichen ZIP-Dateien mit XML-Dateien und verschiedenen Ordnern sind. Ob Sie eine neue Excel-Arbeitsmappe erstellen, mehrere Arbeitsblätter bearbeiten oder Excel-Daten aus externem Code laden wollen, IronXL vereinfacht den Prozess drastisch, ohne dass Sie die zugrunde liegenden Formate verstehen müssen.

Erste Schritte mit IronXL zur Erstellung einer Excel-Datei

Die Einrichtung von IronXL, um Excel-Berichte zu erstellen, dauert nur wenige Minuten. Installieren Sie die Bibliothek über den NuGet-Paket-Manager in Visual Studio:

Install-Package IronXL.Excel
Install-Package IronXL.Excel
SHELL

Laden Sie IronXL noch heute herunter und beginnen Sie mit der Automatisierung Ihrer Excel-Berichtserstellung.

Nachdem die Installation abgeschlossen ist, erfordert die Erstellung Ihres ersten Excel-Berichts nur ein paar Codezeilen:

using IronXL;
// Create a new Excel workbook for reports
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet for the report
WorkSheet reportSheet = workBook.CreateWorkSheet("Monthly Report");
// Add a title
reportSheet["A1"].Value = "Sales Report - January 2024";
reportSheet["A1"].Style.Font.Bold = true;
// Save the Excel report
workBook.SaveAs("MonthlyReport.xlsx");
using IronXL;
// Create a new Excel workbook for reports
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet for the report
WorkSheet reportSheet = workBook.CreateWorkSheet("Monthly Report");
// Add a title
reportSheet["A1"].Value = "Sales Report - January 2024";
reportSheet["A1"].Style.Font.Bold = true;
// Save the Excel report
workBook.SaveAs("MonthlyReport.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dieser Code erstellt eine neue Excel-Berichtsdatei mit einem formatierten Titel. Die vertraute Zellreferenzsyntax (reportSheet["A1"]) macht es den Entwicklern leicht, genau anzugeben, wo die Daten erscheinen sollen, genau wie beim manuellen Arbeiten mit Excel.

Ausgabe

Erstellung von Excel-Berichten in C# mit IronXL: Bild 1 - Beispiel einer Excel-Ausgabe

Daten aus mehreren Quellen laden

Echte Excel-Berichte verwenden selten statische Daten. IronXL ist hervorragend darin, Excel-Daten aus verschiedenen Formaten, APIs, neuen DataTable-Quellen oder sogar mehreren unterschiedlichen XML-Dateien zu integrieren. Dies macht es perfekt für die dynamische C# Excel-Berichtsgenerierung in serverseitigen oder Webanwendungen.

Datenbankintegration

Für datenbankgestützte Excel-Berichte arbeitet IronXL nahtlos mit ADO.NET DataTables zusammen:

using System.Data;
using System.Data.SqlClient;
// Fetch data from database
string connectionString = "Server=localhost;Database=Sales;Integrated Security=true;";
DataTable salesData = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
    SqlDataAdapter adapter = new SqlDataAdapter(
        "SELECT ProductName, Quantity, Revenue FROM MonthlySales", conn);
    adapter.Fill(salesData);
}
// Create Excel report from DataTable
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Sales Data");
// Add headers
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Quantity";
sheet["C1"].Value = "Revenue";
// Populate data
int row = 2;
foreach (DataRow dataRow in salesData.Rows)
{
    sheet[$"A{row}"].Value = dataRow["ProductName"];
    sheet[$"B{row}"].Value = dataRow["Quantity"];
    sheet[$"C{row}"].Value = dataRow["Revenue"];
    row++;
}
using System.Data;
using System.Data.SqlClient;
// Fetch data from database
string connectionString = "Server=localhost;Database=Sales;Integrated Security=true;";
DataTable salesData = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
    SqlDataAdapter adapter = new SqlDataAdapter(
        "SELECT ProductName, Quantity, Revenue FROM MonthlySales", conn);
    adapter.Fill(salesData);
}
// Create Excel report from DataTable
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Sales Data");
// Add headers
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Quantity";
sheet["C1"].Value = "Revenue";
// Populate data
int row = 2;
foreach (DataRow dataRow in salesData.Rows)
{
    sheet[$"A{row}"].Value = dataRow["ProductName"];
    sheet[$"B{row}"].Value = dataRow["Quantity"];
    sheet[$"C{row}"].Value = dataRow["Revenue"];
    row++;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dieser Ansatz lädt Verkaufsdaten direkt von SQL Server in Ihren Excel-Bericht. Die DataTable-Integration bedeutet, dass Sie bestehenden Datenzugriffscode ohne Modifizierung verwenden können. Für komplexere Szenarien sehen Sie sich an, wie man Excel aus SQL-Datenbanken lädt.

Arbeiten mit Sammlungen

Für In-Memory-Daten, Excel-Daten aus API-Antworten oder eine neue DataTable können Collections Excel-Arbeitsblätter einfach und ohne Microsoft Excel oder Abhängigkeiten von Drittanbietern auffüllen:

var salesRecords = new List<SalesRecord>
{
    new SalesRecord { Product = "Widget A", Units = 150, Price = 29.99m },
    new SalesRecord { Product = "Widget B", Units = 82, Price = 49.99m }
};
// Convert collection to Excel
for (int i = 0; i < salesRecords.Count; i++)
{
    sheet[$"A{i+2}"].Value = salesRecords[i].Product;
    sheet[$"B{i+2}"].Value = salesRecords[i].Units;
    sheet[$"C{i+2}"].Value = salesRecords[i].Price;
}
var salesRecords = new List<SalesRecord>
{
    new SalesRecord { Product = "Widget A", Units = 150, Price = 29.99m },
    new SalesRecord { Product = "Widget B", Units = 82, Price = 49.99m }
};
// Convert collection to Excel
for (int i = 0; i < salesRecords.Count; i++)
{
    sheet[$"A{i+2}"].Value = salesRecords[i].Product;
    sheet[$"B{i+2}"].Value = salesRecords[i].Units;
    sheet[$"C{i+2}"].Value = salesRecords[i].Price;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dieser Methode erlaubt es, einen Excel-Bericht in C# direkt in einer .NET-Anwendung zu erstellen und vereinfacht den Prozess der Erstellung von mehreren Arbeitsblättern oder XLSX-Dateien erheblich im Vergleich zur manuellen OLE-Automatisierung oder der Rückwärtsingenieurierung von XML-Dateien.

Ausgabe

Erstellung von Excel-Berichten in C# mit IronXL: Bild 2 - Beispielarbeitsblatt aus der Datenausgabe

Formatierung professioneller Excel-Berichte

Rohdaten allein machen keinen professionellen Bericht. IronXL bietet umfassende Zellformatierungsoptionen zur Erstellung ausgefeilter, geschäftsfähiger Excel-Dateien. Der folgende Code zeigt, wie einfach das mit IronXL ist:

using IronXL;
using IronXL.Styles;

class Program
{
    static void Main(string[] args)
    {
        // Create a new workbook
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        // Add a new worksheet
        var sheet = workbook.CreateWorkSheet("MySheet");
        // Add header values
        sheet["A1"].Value = "Product";
        sheet["B1"].Value = "Quantity";
        sheet["C1"].Value = "Price";
        // Add sample data rows
        sheet["A2"].Value = "Laptop";
        sheet["B2"].Value = 5;
        sheet["C2"].Value = 1299.99;
        sheet["A3"].Value = "Headphones";
        sheet["B3"].Value = 15;
        sheet["C3"].Value = 199.50;
        sheet["A4"].Value = "Keyboard";
        sheet["B4"].Value = 10;
        sheet["C4"].Value = 89.99;
        sheet["A5"].Value = "Monitor";
        sheet["B5"].Value = 7;
        sheet["C5"].Value = 249.00;
        // Header formatting
        var headerRange = sheet["A1:C1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.SetBackgroundColor("#4472C4");
        headerRange.Style.Font.Color = "#FFFFFF";
        headerRange.Style.BottomBorder.Type = BorderType.Thick;
        // Number formatting for currency
        sheet["C:C"].FormatString = "$#,##0.00";
        // Alternating row colors for readability
        for (int row = 2; row <= 10; row++)
        {
            if (row % 2 == 0)
            {
                sheet[$"A{row}:C{row}"].Style.SetBackgroundColor("#F2F2F2");
            }
        }
        // Column width adjustment
        sheet.Columns[0].Width = 15 * 256; // Width in 1/256th of character width
        sheet.Columns[2].Width = 12 * 256;
        // Add borders around data
        var dataRange = sheet["A1:C10"];
        dataRange.Style.TopBorder.Type = BorderType.Thin;
        dataRange.Style.RightBorder.Type = BorderType.Thin;
        dataRange.Style.BottomBorder.Type = BorderType.Thin;
        dataRange.Style.LeftBorder.Type = BorderType.Thin;
        // Save the workbook to a file
        workbook.SaveAs("MyWorkbook.xlsx");
    }
}
using IronXL;
using IronXL.Styles;

class Program
{
    static void Main(string[] args)
    {
        // Create a new workbook
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        // Add a new worksheet
        var sheet = workbook.CreateWorkSheet("MySheet");
        // Add header values
        sheet["A1"].Value = "Product";
        sheet["B1"].Value = "Quantity";
        sheet["C1"].Value = "Price";
        // Add sample data rows
        sheet["A2"].Value = "Laptop";
        sheet["B2"].Value = 5;
        sheet["C2"].Value = 1299.99;
        sheet["A3"].Value = "Headphones";
        sheet["B3"].Value = 15;
        sheet["C3"].Value = 199.50;
        sheet["A4"].Value = "Keyboard";
        sheet["B4"].Value = 10;
        sheet["C4"].Value = 89.99;
        sheet["A5"].Value = "Monitor";
        sheet["B5"].Value = 7;
        sheet["C5"].Value = 249.00;
        // Header formatting
        var headerRange = sheet["A1:C1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.SetBackgroundColor("#4472C4");
        headerRange.Style.Font.Color = "#FFFFFF";
        headerRange.Style.BottomBorder.Type = BorderType.Thick;
        // Number formatting for currency
        sheet["C:C"].FormatString = "$#,##0.00";
        // Alternating row colors for readability
        for (int row = 2; row <= 10; row++)
        {
            if (row % 2 == 0)
            {
                sheet[$"A{row}:C{row}"].Style.SetBackgroundColor("#F2F2F2");
            }
        }
        // Column width adjustment
        sheet.Columns[0].Width = 15 * 256; // Width in 1/256th of character width
        sheet.Columns[2].Width = 12 * 256;
        // Add borders around data
        var dataRange = sheet["A1:C10"];
        dataRange.Style.TopBorder.Type = BorderType.Thin;
        dataRange.Style.RightBorder.Type = BorderType.Thin;
        dataRange.Style.BottomBorder.Type = BorderType.Thin;
        dataRange.Style.LeftBorder.Type = BorderType.Thin;
        // Save the workbook to a file
        workbook.SaveAs("MyWorkbook.xlsx");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Diese Formatierungsoptionen verwandeln einfache Daten in professionelle Berichte. Die Formatierungs-API deckt alles ab, von Schriftarten und Farben bis hin zu Rahmen und Ausrichtung, und ermöglicht die vollständige Kontrolle über das Erscheinungsbild von Excel-Berichten. Für fortgeschrittene Formatierungsanforderungen können Sie bedingte Formatierung nutzen, um wichtige Daten automatisch hervorzuheben.

Erstellung von Excel-Berichten in C# mit IronXL: Bild 3 - Formatierte Excel-Ausgabe

Verwendung von Formeln für dynamische Excel-Berichtrechnungen

Die Stärke von Excel liegt in seinen Formeln, und IronXL unterstützt die Erstellung von Excel-Formeln vollständig:

// Add formula for row totals
sheet["D1"].Value = "Total";
sheet["D2"].Formula = "=B2*C2";
// Copy formula down the column
for (int row = 3; row <= 10; row++)
{
    sheet[$"D{row}"].Formula = $"=B{row}*C{row}";
}
// Add summary formulas
sheet["A12"].Value = "Summary";
sheet["B12"].Formula = "=SUM(B2:B10)";
sheet["C12"].Formula = "=AVERAGE(C2:C10)";
sheet["D12"].Formula = "=SUM(D2:D10)";
// Add formula for row totals
sheet["D1"].Value = "Total";
sheet["D2"].Formula = "=B2*C2";
// Copy formula down the column
for (int row = 3; row <= 10; row++)
{
    sheet[$"D{row}"].Formula = $"=B{row}*C{row}";
}
// Add summary formulas
sheet["A12"].Value = "Summary";
sheet["B12"].Formula = "=SUM(B2:B10)";
sheet["C12"].Formula = "=AVERAGE(C2:C10)";
sheet["D12"].Formula = "=SUM(D2:D10)";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Die Formelunterstützung umfasst alle Standard-Excel-Funktionen wie SUMME, AVERAGE, IF, VLOOKUP und weitere. IronXL behandelt automatisch Formelnabhängigkeiten und Berechnungsreihenfolge, wodurch die Erstellung von Excel-Berichten mit komplexen Berechnungen einfach wird. Erfahren Sie mehr über Mathematische Funktionen in IronXL.

Erstellung von Excel-Berichten in C# mit IronXL: Bild 4 - Beispielausgabe mit Formeln

Vorlagenbasierte Berichte

Für wiederkehrende Excel-Berichte oder standardisierte Arbeitsmappen unterstützt IronXL die vorlagenbasierte Erstellung, sodass Entwickler eine Excel-Datei aus einer Vorlage erstellen können, ohne sich mit Open XML SDK, rels-Dateien oder verschiedenen Ordnern auseinandersetzen zu müssen:

// Load existing template
Workbook templateBook = Workbook.Load("ReportTemplate.xlsx");
Worksheet templateSheet = templateBook.DefaultWorksheet;
// Find and replace template markers
foreach (var cell in templateSheet["A1:Z100"])
{
    if (cell.Text.Contains("{{CompanyName}}"))
        cell.Value = cell.Text.Replace("{{CompanyName}}", "Acme Corp");
    if (cell.Text.Contains("{{ReportDate}}"))
        cell.Value = cell.Text.Replace("{{ReportDate}}", DateTime.Now.ToString("MMMM yyyy"));
}
// Save as new report
templateBook.SaveAs($"Report_{DateTime.Now:yyyyMMdd}.xlsx");
// Load existing template
Workbook templateBook = Workbook.Load("ReportTemplate.xlsx");
Worksheet templateSheet = templateBook.DefaultWorksheet;
// Find and replace template markers
foreach (var cell in templateSheet["A1:Z100"])
{
    if (cell.Text.Contains("{{CompanyName}}"))
        cell.Value = cell.Text.Replace("{{CompanyName}}", "Acme Corp");
    if (cell.Text.Contains("{{ReportDate}}"))
        cell.Value = cell.Text.Replace("{{ReportDate}}", DateTime.Now.ToString("MMMM yyyy"));
}
// Save as new report
templateBook.SaveAs($"Report_{DateTime.Now:yyyyMMdd}.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dieser Ansatz bewahrt eine einheitliche Formatierung bei der Aktualisierung dynamischer Inhalte, perfekt für monatliche Berichte oder standardisierte Dokumente.

Erstellung von Excel-Berichten in C# mit IronXL: Bild 5 - Die Berichtsvorlage im Vergleich zu unserer mit der Vorlage erstellten Excel-Datei

Best Practices und Troubleshooting

Beim Implementieren der Excel-Berichterstellung sollten Sie diese Tipps beachten:

  • Speichernutzung bei großen Dateien: Verarbeiten Sie Daten in Stücken, anstatt ganze Datensätze zu laden (Microsoft's recommendations for large Excel files)
  • Probleme mit der Datumsformatierung: Verwenden Sie DateTime.ToOADate() für Excel-kompatible Datumsangaben (Excel Datumssystem erklärt)
  • Fehler beim Sperren von Dateien: Entsorgen Sie Excel-Objekte immer ordnungsgemäß mit using-Anweisungen oder neuen MemoryStream-Ansätzen.
  • Fehlende Stile: Bei einigen Stileigenschaften muss zuerst die Hintergrundfarbe eingestellt werden

Abschluss

IronXL verwandelt die Erstellung von Excel-Berichten von einem mühsamen manuellen Prozess in einen automatisierten, zuverlässigen Arbeitsablauf. Mit seiner intuitiven API, plattformübergreifenden Unterstützung und umfassendem Funktionsumfang können Entwickler professionelle Excel-Berichte in Minuten statt Stunden erstellen. Die Kombination aus einfacher Datenintegration, leistungsstarken Formatierungsoptionen und Formelsupport macht IronXL zu einem unverzichtbaren Werkzeug für jeden C#-Entwickler, der mit Excel-Berichten arbeitet. Für interessierte Entwickler bietet IronXL eine kostenlose Testversion und weitere Lizenzierungsoptionen für Unternehmen und Einzelpersonen.

Starten Sie jetzt mit IronXL.
green arrow pointer

Jordi Bardia
Software Ingenieur
Jordi ist am besten in Python, C# und C++ versiert. Wenn er nicht bei Iron Software seine Fähigkeiten einsetzt, programmiert er Spiele. Mit Verantwortung für Produkttests, Produktentwicklung und -forschung trägt Jordi mit immensem Wert zur kontinuierlichen Produktverbesserung bei. Die abwechslungsreiche Erfahrung hält ihn gefordert und engagiert, ...
Weiterlesen