var fileName = string.Format("{0}\\fileNameHere", Directory.GetCurrentDirectory());
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
var adapter = new OleDbDataAdapter("SELECT * FROM [workSheetNameHere$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds, "anyNameHere");
DataTable data = ds.Tables["anyNameHere"];
Das benutze ich normalerweise. Es ist etwas anders, weil ich normalerweise ein AsEnumerable () bei der Bearbeitung der Tabellen stecke:
var data = ds.Tables["anyNameHere"].AsEnumerable();
Auf diese Weise kann ich mit LINQ Strukturen aus den Feldern suchen und erstellen.
var query = data.Where(x => x.Field<string>("phoneNumber") != string.Empty).Select(x =>
new MyContact
{
firstName= x.Field<string>("First Name"),
lastName = x.Field<string>("Last Name"),
phoneNumber =x.Field<string>("Phone Number"),
});
xlsx
stattdessen diese Verbindungszeichenfolge verwenden müssen:string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties=Excel 12.0;", fileName)
Wenn es sich nur um einfache Daten handelt, die in der Excel-Datei enthalten sind, können Sie die Daten über ADO.NET lesen. Siehe die hier aufgeführten Verbindungszeichenfolgen:
http://www.connectionstrings.com/?carrier=excel2007 oder http://www.connectionstrings.com/?carrier=excel
-Ryan
Update: Dann können Sie das Arbeitsblatt einfach über so etwas wie lesen
select * from [Sheet1$]
quelle
Der ADO.NET-Ansatz ist schnell und einfach, weist jedoch einige Besonderheiten auf, die Sie beachten sollten, insbesondere hinsichtlich des Umgangs mit DataTypes.
Dieser hervorragende Artikel hilft Ihnen dabei, einige häufige Fallstricke zu vermeiden: http://blog.lab49.com/archives/196
quelle
Folgendes habe ich für Excel 2003 verwendet:
quelle
Wie wäre es mit Excel Data Reader?
http://exceldatareader.codeplex.com/
Ich habe in einer Produktionsumgebung Wut verwendet, um große Datenmengen aus einer Vielzahl von Excel-Dateien in SQL Server Compact zu ziehen. Es funktioniert sehr gut und ist ziemlich robust.
quelle
<dimension>
Element in dem<worksheet>
, das mir Probleme bereitete.Hier ist ein Code, den ich vor einigen Jahren mit .NET 1.1 in C # geschrieben habe. Ich bin mir nicht sicher, ob dies genau das ist, was du brauchst (und möglicherweise nicht mein bester Code :)).
quelle
Koogra ist eine in C # geschriebene Open-Source-Komponente, die Excel-Dateien liest und schreibt.
quelle
Während Sie speziell nach .xls gefragt haben, was die älteren Dateiformate impliziert, empfehle ich für die OpenXML-Formate (z. B. xlsx) das OpenXML SDK ( http://msdn.microsoft.com/en-us/library/bb448854.aspx ).
quelle
Ich habe vor einiger Zeit viel aus Excel-Dateien in C # gelesen, und wir haben zwei Ansätze verwendet:
Letzterer Ansatz war viel schneller: Das Lesen einer großen Tabelle mit 20 Spalten und 200 Zeilen würde über COM 30 Sekunden und über ODBC eine halbe Sekunde dauern. Daher würde ich den Datenbankansatz empfehlen, wenn Sie nur die Daten benötigen.
Prost,
Carl
quelle
ExcelMapper ist ein Open Source-Tool ( http://code.google.com/p/excelmapper/ ), mit dem Excel-Arbeitsblätter als stark typisierte Objekte gelesen werden können. Es unterstützt sowohl das xls- als auch das xlsx-Format.
quelle
Ich möchte eine einfache Methode zum Lesen der xls / xlsx-Datei mit .NET zeigen. Ich hoffe, dass das Folgende für Sie hilfreich sein wird.
Der Code stammt aus dem Artikel: http://www.c-sharpcorner.com/uploadfile/d2dcfc/read-excel-file-with-net/ . Sie können mehr Details davon erhalten.
quelle
Nicht kostenlos, aber mit dem neuesten Office gibt es eine sehr schöne Automatisierungs-.NET-API. (Es gibt schon lange eine API, die aber unangenehm war.) Sie können alles tun, was Sie im Code wollen / brauchen, während die Office-App ein versteckter Hintergrundprozess bleibt.
quelle
Verzeihen Sie mir, wenn ich hier außerhalb der Basis bin, aber sind die Office-PIAs nicht dafür gedacht ?
quelle
In letzter Zeit teilweise, um LINQ besser zu machen ... Ich habe die Automatisierungs-API von Excel verwendet, um die Datei als XML-Tabelle zu speichern und diese Datei dann mit LINQ zu XML zu verarbeiten.
quelle
SpreadsheetGear für .NET ist eine Excel-kompatible Tabellenkalkulationskomponente für .NET. Auf der rechten Seite unserer Produktseite sehen Sie, was unsere Kunden zur Leistung sagen . Sie können es selbst mit der kostenlosen, voll funktionsfähigen Bewertung versuchen .
quelle
SmartXLS ist eine weitere Excel-Tabellenkomponente, die die meisten Funktionen von Excel-Diagrammen und Formeln unterstützt und das openxml-Format von excel2007 lesen / schreiben kann.
quelle
Die .NET-Komponente Excel Reader .NET erfüllt möglicherweise Ihre Anforderungen. Es ist gut genug, um XLSX- und XLS-Dateien zu lesen. Probieren Sie es aus:
quelle
Ich empfehle die FileHelpers Library, eine kostenlose und einfach zu verwendende .NET-Bibliothek zum Importieren / Exportieren von Daten aus EXCEL, festen oder begrenzten Datensätzen in Dateien, Zeichenfolgen oder Streams + More.
Der Abschnitt zur Dokumentation von Excel-Datenverbindungen http://filehelpers.sourceforge.net/example_exceldatalink.html
quelle
Sie können versuchen, diese Open-Source-Lösung zu verwenden, die den Umgang mit Excel wesentlich sauberer macht.
http://excelwrapperdotnet.codeplex.com/
quelle
SpreadsheetGear ist großartig. Ja, es ist eine Ausgabe, aber im Vergleich zu diesen anderen Lösungen ist es die Kosten wert. Es ist schnell, zuverlässig, sehr umfassend und ich muss sagen, nachdem ich dieses Produkt über anderthalb Jahre in meinem Vollzeit-Software-Job verwendet habe, ist die Kundenbetreuung fantastisch!
quelle
Die Lösung, die wir verwendeten, musste:
Es gibt mehrere Möglichkeiten, aber wir haben festgestellt, dass NPoi (.NET-Port von Javas seit langem bestehendem Poi- Open-Source-Projekt) die beste ist: http://npoi.codeplex.com/
Es ermöglicht auch das Arbeiten mit den Dateiformaten .doc und .ppt
quelle
Wenn es nur tabellarische Daten sind. Ich würde Dateidaten-Helfer von Marcos Melli empfehlen, die hier heruntergeladen werden können .
quelle
Spät zur Party, aber ich bin ein Fan von LinqToExcel
quelle
Sie könnten eine Excel-Tabelle schreiben, die eine bestimmte Excel-Tabelle lädt und als CSV speichert (anstatt sie manuell auszuführen).
dann könnten Sie das von c # aus automatisieren.
und sobald es in csv ist, kann das c # -Programm das verstehen.
(Wenn Sie jemand bittet, in Excel zu programmieren, tun Sie am besten so, als wüssten Sie nicht, wie)
(edit: ah ja, rob und ryan haben beide recht)
quelle
Ich weiß, dass Leute zu diesem Zweck eine Excel- "Erweiterung" erstellt haben.
Sie erstellen in Excel mehr oder weniger eine Schaltfläche mit der Aufschrift "In Programm X exportieren" und exportieren und senden die Daten dann in einem Format, das das Programm lesen kann.
http://msdn.microsoft.com/en-us/library/ms186213.aspx sollte ein guter Anfang sein.
Viel Glück
quelle
Ich habe gerade ein schnelles Demo-Projekt durchgeführt, bei dem einige Excel-Dateien verwaltet werden mussten. Die .NET-Komponente der GemBox-Software war für meine Anforderungen ausreichend. Es gibt eine kostenlose Version mit einigen Einschränkungen.
http://www.gemboxsoftware.com/GBSpreadsheet.htm
quelle
Excel Package ist eine Open Source-Komponente (GPL) zum Lesen / Schreiben von Excel 2007-Dateien. Ich habe es für ein kleines Projekt verwendet und die API ist unkompliziert. Funktioniert nur mit XLSX (Excel 200 &), nicht mit XLS.
Der Quellcode scheint auch gut organisiert und leicht zu umgehen zu sein (wenn Sie die Funktionalität erweitern oder kleinere Probleme beheben müssen, wie ich es getan habe).
Zuerst habe ich den ADO.Net-Ansatz (Excel-Verbindungszeichenfolge) ausprobiert, aber er war mit bösen Hacks behaftet. Wenn beispielsweise die zweite Zeile eine Zahl enthält, werden Ints für alle Felder in der folgenden Spalte zurückgegeben und alle Daten werden leise gelöscht das passt nicht
quelle
Wir gebrauchen ClosedXML in ziemlich großen Systemen.
quelle
Take.io
Spreadsheet erledigt diese Arbeit für Sie und kostenlos. Werfen Sie einen Blick auf diese .quelle
Ich habe gerade ExcelLibrary verwendet , um eine XLS-Tabelle in ein DataSet zu laden. Hat super für mich funktioniert.
quelle