Vor 3 Stunden
Ich hätte noch eine Frage zu C#. Kann ich mit C# auf Exceldateien zugreifen?
Zitat:Ja, auf jeden Fall! In C# gibt es mehrere Möglichkeiten, auf Excel-Dateien zuzugreifen, je nachdem, ob du Excel installiert hast oder nicht, und ob du .xlsx (Office Open XML) oder .xls (älteres Format) verwenden willst. Ich erkläre dir die gängigsten Wege.
1️⃣ Mit Excel COM Interop (Excel muss installiert sein)
- Nutzt die Excel-Anwendung über COM
- Sehr mächtig → alle Funktionen von Excel verfügbar
- Beispiel:
Vorteile:Code:using Excel = Microsoft.Office.Interop.Excel;
class Program
{
static void Main()
{
var excelApp = new Excel.Application();
excelApp.Visible = false;
var workbook = excelApp.Workbooks.Open(@"C:\Pfad\zur\Datei.xlsx");
var sheet = (Excel.Worksheet)workbook.Sheets[1];
var value = sheet.Cells[1, 1].Value2;
Console.WriteLine("Wert Zelle A1: " + value);
workbook.Close(false);
excelApp.Quit();
}
}Nachteile:
- Voller Zugriff auf Excel-Funktionen (Formeln, Charts etc.)
- Kann auch komplexe Makros ausführen
- Excel muss installiert sein
- Nur auf Windows
- COM kann manchmal instabil sein
2️⃣ Mit Open XML SDK (Excel muss nicht installiert sein)
- Nutzt Office Open XML Format (.xlsx)
- Nur für .xlsx, nicht für alte .xls
- Microsoft SDK →
NuGet-PaketCode:DocumentFormat.OpenXml
Vorteile:Code:using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
class Program
{
static void Main()
{
using (SpreadsheetDocument doc = SpreadsheetDocument.Open(@"C:\Pfad\Datei.xlsx", false))
{
WorkbookPart wbPart = doc.WorkbookPart;
Sheet sheet = wbPart.Workbook.Sheets.GetFirstChild<Sheet>();
WorksheetPart wsPart = (WorksheetPart)(wbPart.GetPartById(sheet.Id));
SheetData sheetData = wsPart.Worksheet.Elements<SheetData>().First();
Row row = sheetData.Elements<Row>().First();
Cell cell = row.Elements<Cell>().First();
Console.WriteLine("Wert A1: " + cell.CellValue.Text);
}
}
}Nachteile:
- Kein Excel nötig
- Plattformunabhängig (Windows + Linux via .NET Core/5/6/7)
- Etwas komplexer, besonders für Formeln oder Formatierungen
3️⃣ Mit Drittanbieter-Bibliotheken
a) EPPlus
- Sehr beliebt, unterstützt .xlsx
- Einfach zu lesen und schreiben
b) NPOICode:using OfficeOpenXml;
using System.IO;
class Program
{
static void Main()
{
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
using (var package = new ExcelPackage(new FileInfo(@"C:\Pfad\Datei.xlsx")))
{
var worksheet = package.Workbook.Worksheets[0];
var value = worksheet.Cells[1, 1].Text;
Console.WriteLine("Wert A1: " + value);
}
}
}
- Unterstützt .xls und .xlsx
- Plattformunabhängig
Meine Empfehlung:
- Wenn Excel installiert ist und volle Funktionalität nötig: COM Interop
- Wenn nur lesen/schreiben nötig & Plattformunabhängigkeit wichtig: EPPlus oder Open XML SDK
Wenn du willst, kann ich dir ein kleines C#-Beispiel bauen, das eine Excel-Datei liest, eine neue Zeile hinzufügt und speichert, komplett mit EPPlus – fertig für die direkte Nutzung.
Willst du, dass ich das erstelle?

