Heim >Backend-Entwicklung >C++ >Wie kann ich Excel -Dateien effizient in C# ohne externe Bibliotheken effizient lesen und manipulieren?
Direkte Excel -Dateizugriff in C#: Ein optimierter Ansatz
Die automatisierende Datenbearbeitung erfordert häufig effiziente C# -Methoden für den direkten Zugriff auf Excel -Dateien. Dies kann effektiv mit leicht verfügbaren, kostenlosen oder Open-Source-Bibliotheken erreicht werden.
Nutzung des Microsoft Jet OLEDB -Anbieters
Der Microsoft Jet OLEDB -Anbieter bietet eine leistungsstarke Lösung. Es ermöglicht C# -Anwendungen, eine Verbindung zu Excel -Dateien herzustellen und Daten über Abfragen abzurufen. So wie:
<code class="language-csharp">var filePath = Path.Combine(Directory.GetCurrentDirectory(), "fileNameHere.xlsx"); //Improved path handling var connectionString = $"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={filePath};Extended Properties='Excel 12.0;HDR=YES;';"; //Updated for newer Excel versions and header detection using (var connection = new OleDbConnection(connectionString)) { connection.Open(); using (var command = new OleDbCommand("SELECT * FROM [Sheet1$]", connection)) //Assumes sheet name "Sheet1" { using (var reader = command.ExecuteReader()) { while (reader.Read()) { //Process each row here string columnName1 = reader["ColumnName1"].ToString(); // ... process other columns } } } }</code>
Dieser Code wird mit der Excel -Datei eine Verbindung hergestellt, eine Abfrage ausführt (Auswahl aller Daten aus "Blatt1") und die Ergebniszeile mit einer OleDbDataReader
verarbeitet. Beachten Sie die aktualisierte Verbindungszeichenfolge für eine bessere Kompatibilität mit modernen Excel -Versionen und verbesserten Fehlerbehandlungen mithilfe von using
Anweisungen.
Datenmanipulation mit Linq
Für ausgefeiltere Datenmanipulation bietet Linq (Language Integrated Query) ein leistungsstarkes Toolset. Während das obige Beispiel die Daten aus dem OleDbDataReader
direkt verarbeitet, können Sie ein DataTable
bevölkern und dann LINQ:
<code class="language-csharp">// ... (previous code to populate a DataTable named 'dataTable') ... var contacts = dataTable.AsEnumerable() .Where(row => !string.IsNullOrEmpty(row.Field<string>("phoneNumber"))) .Select(row => new MyContact { FirstName = row.Field<string>("FirstName"), LastName = row.Field<string>("LastName"), PhoneNumber = row.Field<string>("phoneNumber") });</code>
Diese Linq -Abfrage filtert für Kontakte mit Telefonnummern und projiziert sie in eine benutzerdefinierte MyContact
Klasse.
Dieser kombinierte Ansatz unter Verwendung des Microsoft Jet OLEDB -Anbieters und LINQ bietet eine effiziente und flexible Möglichkeit, mit Excel -Daten direkt innerhalb Ihrer C# -Anwendung zu interagieren, wodurch die Komplexität der manuellen Datenanalyse vermieden wird. Denken Sie daran, potenzielle Ausnahmen in einer Produktionsumgebung angemessen zu bewältigen.
Das obige ist der detaillierte Inhalt vonWie kann ich Excel -Dateien effizient in C# ohne externe Bibliotheken effizient lesen und manipulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!