Hallo zusammen, ich möchte von mit einer C# 2008 Anwendung Daten nach Excel bringen. Hat jemand von euch schon mal sowas gemacht? Ich hab mal den Google bemüht, nur leider komm ich da so gar nicht weiter. Ich muss wohl eine Bibliothek einbinden, und genau da gehts schon los, wenn ich den entsprechenden Befehl >>using ....<< hinzufüge, dann meckert mein Compiler schon. Wohl fehlt ihm die nötige .dll Datei. Aber wo muss ich die hinzufügen und woher bekomm ich die? Wenn mir jemand weiterhelfen könnte, wäre ich sehr dankbar. Gruß und Dank
:
Verschoben durch Moderator
du kannst excel einfach als AktivX control nutzen, damit kannst du excel quasi Fernbedienen. ja nach Entwickungsumgebung kann du so ein excel objekt einfach auf dein Formular ziehen.
Wenn du mit Windows Forms arbeitest, schau dir mal das DataGrid-Steuerelement an. http://msdn.microsoft.com/de-de/library/bb979532.aspx http://msdn.microsoft.com/de-de/library/bb979313.aspx
Peter schrieb: > du kannst excel einfach als AktivX control nutzen, damit kannst du excel > quasi Fernbedienen. Möchte ich in dieser Form eigentlich nicht, denn es muss eine Möglichkeit geben das ganze von C# auf direktem Weg in Excel zu bekommen ohne Großartige Umwege. Ich möchte lediglich daten die in einem Array stehen in eine Excel Tabelle bekommen. Ladde schrieb: > Wie wärs mit csv? Das funktioniert bereits, jedoch habe ich dabei den Nachteil, dass ich zuerst mal eine .csv Datei erzeugen muss und diese dann in Excel einlesen muss. Meine Vorstellung sieht eher so aus, dass sich auf Knopfdruck ein neues Excel Sheet öffnet und in dieses Sheet die Daten aus dem Array eingetragen werden. So in etwa stelle ich mir das vor: http://blog.stefan-macke.com/2006/06/28/c-projekt-zugriff-auf-excel-dateien/ Jedoch eben in die andere Richtung, aber unter Verwendung der Bibliothek. Und da ist eben schon mein erstes Problem, dass ich nicht weiß wie ich diese Bibliothek richtig einbinden muss. Gruß und Dank
Ich nutze erfolgreich: http://www.codeproject.com/KB/office/Excel_DataReader.aspx Damit kann man aus Excel (2000-2003 glaub ich) dateien lesen
Hast Du als COM-Komponente überhaupt schon als Referenz hinzugefügt? Sonst geht Dein using nicht Gruß Tom
Thomas Burkhart schrieb: > Hast Du als COM-Komponente überhaupt schon als Referenz hinzugefügt? > Sonst geht Dein using nicht Wie mach ich das? Ich blick es nicht ganz wie das gehen soll. Könntest du mir bitte etwas auf die Sprünge helfen? Sorry hab mit C# noch nicht sehr viel Erfahrung, auser den Standard Dingen die man ich in der Schule gelernt habe.
Solution Explorer->rechte maustaste->add reference->COM Objects->Microsoft Excel xx Objectlibrary Wie Du Excel konkret ansteuerst kann ich Dir nicht sagen, aber es geht auf alle Fälle. Such mal nach "Excel Automation c#" Gruß Tom
Dirk K. schrieb: > Wie mach ich das? Ich blick es nicht ganz wie das gehen soll. > Könntest du mir bitte etwas auf die Sprünge helfen? > Sorry hab mit C# noch nicht sehr viel Erfahrung, auser den Standard > Dingen die man ich in der Schule gelernt habe. Hallo einfach im Solution Explorer mit der rechten Maustaste auf References klicken und auf "Add Reference" -> Tab "COM" auswählen und "Microsoft Office Excel xx.x Object Library" auswählen, dann sollte das ganze in etwa so aussehen wie im letzten Screenshot (vc04.png). Dann kannst du das ganze wie in Deinem Link nutzen. Gruß, Sascha
Dirk K. schrieb: > Hallo zusammen, > > ich möchte von mit einer C# 2008 Anwendung Daten nach Excel bringen. > Hat jemand von euch schon mal sowas gemacht? > > Ich hab mal den Google bemüht, nur leider komm ich da so gar nicht > weiter. Ich muss wohl eine Bibliothek einbinden, und genau da gehts > schon los, wenn ich den entsprechenden Befehl >>using ....<< hinzufüge, > dann meckert mein Compiler schon. Wohl fehlt ihm die nötige .dll Datei. > Aber wo muss ich die hinzufügen und woher bekomm ich die? > > Wenn mir jemand weiterhelfen könnte, wäre ich sehr dankbar. > > Gruß und Dank Für den Weg, der in dem Blog-Artikel und auf der MS-Seite (http://support.microsoft.com/kb/302084/) beschrieben ist, muss Office auf dem Rechner installiert sein. Ohne installiertes Office bieten sich auch die SDKs zum OpenXML-Format an: http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&displaylang=en http://www.microsoft.com/downloads/details.aspx?FamilyId=C6E744E5-36E9-45F5-8D8C-331DF206E0D0&displaylang=en http://openxmldeveloper.org/forums/thread/1816.aspx
Danke für die Prima erklärung! Die Bibliothek hab ich jetzt eingebunden bekommen. Kann mittlerweile schon Excel öffnen und eine bereits beschriebene Datei auslesen. Jedoch klemmt es noch dabei ein neues Tabellenblatt anzulegen und dies zu beschreiben. hat da noch jemand eine Lösung parat? Gruß und Dank
Das müsste in der Art Application.ActiveWorkbook.WorkSheets.Add funktionieren, wenn ich mich da an meine VBA.Kenntnisse erinnere. Gruß Tom
Hallo Dirk, wie folgt schaut der Code bei mir in etwa aus:
1 | // Hier die Standard usings etc... |
2 | using System.Reflection; |
3 | using Microsoft.Office.Interop.Excel; |
4 | using Microsoft.Office.Core; |
5 | |
6 | // Helper für COM Automation |
7 | private object oFalse = false; |
8 | private object oTrue = true; |
9 | private object oMissing = System.Reflection.Missing.Value |
10 | |
11 | private void createExcelSheet() |
12 | { |
13 | // Excel starten |
14 | Application oXL = new ApplicationClass(); |
15 | |
16 | // Neues Workbook Erzeugen |
17 | Workbook oBook = oXL.Workbooks.Add( oMissing ); |
18 | |
19 | // Neues Worksheet erzeugen |
20 | Worksheet oSheet = ( Worksheet ) oBook.Worksheets.Add( oMissing, oMissing, oMissing, XlSheetType.xlWorksheet ); |
21 | |
22 | oSheet.Name = "Test" |
23 | |
24 | // Am Ende wieder alles aufräumen |
25 | oXL.Quit(); |
26 | System.Runtime.InteropServices.Marshal.ReleaseComObject( oSheet ); |
27 | System.Runtime.InteropServices.Marshal.ReleaseComObject( oBook ); |
28 | System.Runtime.InteropServices.Marshal.ReleaseComObject( oXL ); |
29 | } |
Kann sein, dass dort noch zusätzliche Referenzen drinne stecken wegen System.Reflection bzw. System.Runtime.InteropServices, kann das grad nicht nachschauen weil ich die Windows VM nicht laufen habe. Ansonsten ist das hier das erzeugen eines neuen Tabellenblattes und das drumherum. Einen Bug musste ich bisher beobachten in meinen Applikationen: Wenn man größere Datenmengen so nach Excel pumpt ist es durchaus schön, Excel während man die Tabellen füllt via oXL.Visible = false; auszublenden und wenn alles Fertig ist dann wieder einzublenden; so geht zum einen das Einfügen schneller weil er nicht dauernd die Tabelle rendern muss und zum anderen sieht es für den User schöner aus. Allerdings taucht Excel dann in einigen Fällen nicht mehr auf, der Prozess ist im Hintergrund zwar vorhanden jedoch passiert beim Sichtbar machen nichts mehr. Beendet man den Prozess und lässt Excel das Tabellenblatt speichern kommt man allerdings an die Daten ran. Gruß, Sascha
@ Sascha H. Vielen Dank, ich habe das ganze mit einigen änderungen übernommen und das funktioniert soweit! Jetzt bin ich gerade dabei, wie ich einzelne Zellen beschreibe bzw. wie ich vorher einzelne Tabellenblätter auswählen kann.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.