Daten über C# in Excel einpflegen?
Hallo, wie man im Titel schon erkennen kann, suche ich eine Lösung, wie ich eine C# Anwendung schreiben kann, das sie in eine Excel Tabelle eingetragen werden.
Folgende Situation: Ich bin ein Informatiker-Azubi und mein Chef möchte, dass ich im Laufe der Ausbildung ein Programm schreibe, welches Daten von Kunden in eine Excel-Tabelle eintragen kann ( Firma, Name, Vorname, Adresse, Sonstiges,...) und wieder aufrufen kann.
Das Programm müsste auch erkennen, welche Zellen schon voll sind und welche Zeilen noch frei sind (Kann ja mal sein, dass man die Firma einträgt, aber keinen Ansprechpartner hat oder sowas und die Zelle leer ist)
Eine Hilfe wäre echt top.
Vielen Dank!
4 Antworten
Hi,
schau mal hier:
http://www.michael-grassmann.de/home/index.php/entwicklung/c/office-obj-zugreifen
Du kannst von C# über Microsoft.Office.Interop auf Excel zugreifen.
Kann man so nur oberflächlich beantworten, da die Struktur des Excel Dokuments nicht klar ist. Weiterhin (und das sage ich aus 15 Jahren professioneller Erfahrung, in denen ständig solche Anforderungen kommen): Solch eine Lösung ist meistens Mist und funktioniert nicht.
Verwendet lieber eine vernünftige Datenbank (z.B. Microsoft SQL Server Express Edition with Reporting Services) und wenn daraus Dokumente für Kunden entstehen sollen, dann macht diese als Report. Dann habt ihr ein schönes skalierbares System in C# und braucht nicht diese Krücke Excel.
Das mit Excel wird meistens nur deswegen gewünscht, weil es das einzige Tool ist, was die Leute sich vorstellen können. "When all you have is a hammer, every problem looks like a nail".
So. Jetzt zum technischen Teil: Es ist natürlich möglich, per Visual Studio Tools For Office (VSTO) Excel fernzusteuern und im Hintergrund Dinge tun zu lassen. Referenziere dazu die entsprechenden Bibliotheken in Deinem Projekt. Das klappt aber nur, wenn Office auf dem Rechner auch installiert ist und es geht nur, wenn das Programm in einer Benutzersession läuft. Beispielsweise also nicht in einem Windows Service.
Weitere Möglichkeit: Du nimmst Excel einfach als "Tabelle". Dann kannst Du auf diese per ADO.NET zugreifen und mit OleDbCommands wie in eine Datenbank schreiben. Das geht aber nur Zeilenorientiert. Das heißt, Du kannst nicht einfach Zelle [L13] schreiben, sondern Du kannst wie aus einer Datenbank Zeilen einlesen, aktualisieren, löschen oder einfügen.
Bitte? Warum sollte eine auf Office basierende Lösung denn in der Erstellung günstiger sein? Um irgendwas Funktionierendes mit Office zu programmieren, braucht jeder Entwickler bei uns im Haus grundsätzlich länger, als eine vernünftige Datenbanklösung zu programmieren, weil mit Office immer irgendwas nicht geht, wie man es gerne hätte und man drumrum entwickeln muss.
Das Argument ist häufig "Office ist ja eh da". Stimmt. Aber das macht es nicht besser.
Hi, danke für die Antwort.
Klar wären vorgesehene Datenbanken besser, aber ich soll ja auch etwas was ich gelernt habe und was ich in der Schule als Projekt mache auch umsetzen können. Es geht an sich nur darum, dass ich einfach für einen "imaginären Kunden" solch ein System schreiben "kann".
Mal nebenbei wollen auch viele lieber Excel haben, da man da direkt über Word zB. Serienbriefe per Click-by-Click einfach erstellen und drucken kann..
Word-Serienbriefe gehen auch mit anderen Datenquellen als Excel. Insbesondere mit Access, das ja auch ein Bestandteil von Microsoft Office ist. Wenn auch nicht von den "Low-Budget-Versionen".
ihr wollt nicht wirklich Kundendaten in ner excel pflegen?
bind lieber ne DB mit an.
Ich soll es aber über Excel machen. Klar könnte ich auch Access nehmen, aber ich soll Excel-Tabellen einpflegen.
Stackexchange. Für hier ist die Frage, denke ich, zu hoch.
Hi deine Einwände doch eine richtige Datenbank zu nutzen sind natürlich berechtigt. Leider wird in vielen Bereichen auf Office-Lösungen gesetzt, da diese in der Erstellung günstiger sind. Allerdings ziehen diese Support nach sich. Voraussetzung ist natürlich ein korrekt installiertes Office.