Excel-Tabelle mit C # .NET abfragen, ohne Jet OLE DB zu verwenden

7

Gibt es eine Möglichkeit, eine Excel 2010-Tabelle abzufragen, ohne Jet zu verwenden oder als CSV zu exportieren und die CSV-Datei abzufragen.

Der Grund, warum ich Jet nicht verwenden kann, ist, dass die Anwendung als Webdienst unter Windows Server 2008 R2 ohne 32-Bit-Unterstützung ausgeführt werden muss - daher wird Jet nicht funktionieren. Dies ist gegeben, da WOW 64 nicht auf dem Zielserver installiert ist.

Dieser Thread schlägt vor, a zu verwenden 32-Bit-Proxy-Maschine, aber das ist auch keine Option.

Weitere Informationen: Auf dem Server läuft Sharepoint 2010.

Danke,

JD

    
Darbio 02.11.2010, 00:45
quelle

4 Antworten

12

Ja - Sie können Excel.Interop verwenden - verweisen Sie es von Ihrem C # -Programm aus, indem Sie auf der Registerkarte .Net des VS-Referenzdialogfelds einen Verweis auf Microsoft.Office.Interop.Excel (Version 13, denke ich für Excel 2010) hinzufügen .

FYI: Es ist keine gute Idee, Daemons auf einem Server mit Interop auszuführen: Ссылка , aber wenn es ein kurz laufendes Programm ist, das von einem Benutzer ausgeführt wird und Sie es überwachen, sollte es in Ordnung sein.

Wenn Sie möchten, dass Ihre Clients das Programm ausführen, müssen sie die primären Interop Assemblies (PIAs) installieren, wenn sie das nicht bereits bei der Installation von Office getan haben, sie können hier abgerufen werden:

XP: Ссылка 2003: Ссылка 2007: Ссылка 2010: Ссылка

Ich habe Office11 auf meinem x64-Vista-Computer verwendet, so dass ich nicht glaube, dass x64 Probleme bereiten wird.

Seien Sie gewarnt, die Dokumentation ist schrecklich! Es gibt ungefähr 10 verschiedene Versionen der Hilfe, Dokumentation da draußen. Ich empfehle:

Machen Sie sich mit dem:

vertraut
  • Anwendung
  • Arbeitsbuch
  • Arbeitsblatt
  • Reichweite

Objekte. Sie können Daten in eine List & lt; List & lt; string & gt; & gt; (In diesem Fall müssten alle Ihre Zellen als Text formatiert werden) oder etwas im Speicher, dann müssen Sie sich nicht mehr mit Interop und dessen v. Verwenden Sie in C # immer eine Methode (einige Dokumentationen weisen Sie fälschlicherweise darauf hin, dass Sie dort keine Methoden verwenden können, die sie für den internen Gebrauch verwenden), z.     Bereich.get_Values ​​("A1") im Gegensatz zu:     Range.Cells;

Ein guter Anfang ist hier: Ссылка

Offizielle Dokumentation ist hier: Ссылка , aber es enthält eine Menge Marketing-Waffel, bis Sie zu der Interop-Bibliothek gelangen, die ein Jahrzehnt alt ist.

Und Vorsicht: Excel-Indizes basieren auf 1, d. h. das erste Element im zurückgegebenen 2D-Array beginnt bei my2DArray [1,1]!

    
markmnl 02.11.2010, 00:52
quelle
4

Sie können nicht nur Excel.Interop, sondern auch ADO.Net verwenden, um die ACE-Engine anstelle der älteren JET-Engine zu verwenden. ACE wurde mit Excel / Access 2007 eingeführt und soll JET ersetzen.

    
winwaed 02.11.2010 00:56
quelle
4

Ich habe das auch gesehen. Meine Situation: nicht-triviale Client-App, die auf Windows 7 x64 sowie x86 ausgeführt werden muss. Sie müssen Daten aus Excel-Tabellen extrahieren. keine Flexibilität und minimale "Benutzer Schmerzen" erforderlich. ACEDB (Access Database Engine Redist.) Hat es nicht getan, da die x64-Version von der nicht installiert werden kann, wenn x86 (32-Bit) Office bereits installiert ist. PIA war keine Option - "minimaler Benutzerschmerz".

Ich habe diese Bibliothek benutzt: Ссылка

Es kommt mit umfangreichen Samples und ich konnte die App auf "Any CPU" aufbauen, statt auf x86 zu beschränken, was Probleme mit anderen Dlls von Drittanbietern verursachte, die wir benutzen wollten. Ich war innerhalb von 10 Minuten mit NPOI unterwegs und kann es auf jeden Fall empfehlen.

    
pelazem 25.04.2012 13:23
quelle
1

Hier ist ein weiteres Paket von Drittanbietern, das mir gerade von einem Kollegen vorgeschlagen wurde: Aspose Excel-Spreadsheet-Komponenten

Sieht so aus, als würde dies die Notwendigkeit von Interop und der Notwendigkeit, die Office PIAs installieren zu müssen, verringern.

Es gibt jedoch keine Preise, daher ist es vielleicht nicht billig.

    
Darbio 02.11.2010 01:06
quelle

Tags und Links