Daten über C# in Excel einpflegen?

4 Antworten

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.

mx2000  16.02.2017, 09:15

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.

0
ohwehohach  16.02.2017, 09:19
@mx2000

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.

1
Amorphiris 
Fragesteller
 16.02.2017, 09:59
@ohwehohach

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.. 

0
PWolff  16.02.2017, 11:48
@Amorphiris

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".

0

ihr wollt nicht wirklich Kundendaten in ner excel pflegen? 

bind lieber ne DB mit an.

Amorphiris 
Fragesteller
 16.02.2017, 12:28

Ich soll es aber über Excel machen. Klar könnte ich auch Access nehmen, aber ich soll Excel-Tabellen einpflegen.

0

Stackexchange. Für hier ist die Frage, denke ich, zu hoch.