Benutzer mit den meisten Antworten
Daten von MsSql Datenbank in Excelblatt laden

Frage
Antworten
-
Hallo C.,
Wenn Du nicht während der Dateneingabe durch den Benutzer die Datenbank aktualisieren mußt, würde auch ich Dir den Weg über den OleDb Managed Data Provider und ADO.NET empfehlen. Es gibt viele Beispiele dazu, ich greife willkürlich eines heraus:
Reading and Writing Excel Spreadsheets Using ADO.NET C# DbProviderFactory:
http://www.davidhayden.com/blog/dave/archive/2006/05/26/2973.aspxWillst Du das ganze aus Excel heraus erledigen (aber weiterhin .NET verwenden), mußt Du ein VSTO Add-In schreiben.
Gruß
Marcel- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 14. Juni 2011 15:20
-
Hi,
kommt ganz darauf an wie du es machen willst. Die einfachste Möglichkeit ist im Excel Im Reiter Daten dir die Informationen direkt aus der Datenquelle per ODBC-Aufruf zu holen.
Eine weitere Möglichkeit wäre der ADO-Zugriff über Excel-VBA
Außerdem kannst du mit VSTO(Visual Studio Tools fpr Office) ein Workbook erstellen und hier zB. über ADO oder Linq die Daten in die Tabellenblätter ziehen.
Welcher dieser Schritte wäre denn für dich am Besten geeignet?
Cheers, Jörn Bosse
Microsoft Student Partner- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 14. Juni 2011 15:20
-
z.B. per ODBC.
Schau dir mal folgenden Link an:
http://csharp.net-informations.com/excel/csharp-excel-oledb-insert.htm- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 14. Juni 2011 15:20
Alle Antworten
-
Hi,
kommt ganz darauf an wie du es machen willst. Die einfachste Möglichkeit ist im Excel Im Reiter Daten dir die Informationen direkt aus der Datenquelle per ODBC-Aufruf zu holen.
Eine weitere Möglichkeit wäre der ADO-Zugriff über Excel-VBA
Außerdem kannst du mit VSTO(Visual Studio Tools fpr Office) ein Workbook erstellen und hier zB. über ADO oder Linq die Daten in die Tabellenblätter ziehen.
Welcher dieser Schritte wäre denn für dich am Besten geeignet?
Cheers, Jörn Bosse
Microsoft Student Partner- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 14. Juni 2011 15:20
-
z.B. per ODBC.
Schau dir mal folgenden Link an:
http://csharp.net-informations.com/excel/csharp-excel-oledb-insert.htm- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 14. Juni 2011 15:20
-
kommt ganz darauf an wie du es machen willst. Die einfachste Möglichkeit ist im Excel Im Reiter Daten dir die Informationen direkt aus der Datenquelle per ODBC-Aufruf zu holen.
Eine weitere Möglichkeit wäre der ADO-Zugriff über Excel-VBA.
Außerdem kannst du mit VSTO(Visual Studio Tools fpr Office) ein Workbook erstellen und hier zB. über ADO oder Linq die Daten in die Tabellenblätter ziehen.
Welcher dieser Schritte wäre denn für dich am Besten geeignet?
Also so genau weiß ich noch nicht ob ich eine Windows Form oder eine VSTO Anwendung machen will.
Ich will die Daten einlesen in Excel, Auswerten und evtl. auch wieder zurück schreiben.
Da brauch ich ja dann auf jeden Fall noch irgendwelche DB_Update aktionen.
Die erste Methode direkt in Excel den Reiter Daten zu verwenden will ich nicht, ich will nen Button drücken der mir die Daten einliest und danach einen Button drücken der die Daten wieder zurück schreibt.
-
Hallo C.,
Wenn Du nicht während der Dateneingabe durch den Benutzer die Datenbank aktualisieren mußt, würde auch ich Dir den Weg über den OleDb Managed Data Provider und ADO.NET empfehlen. Es gibt viele Beispiele dazu, ich greife willkürlich eines heraus:
Reading and Writing Excel Spreadsheets Using ADO.NET C# DbProviderFactory:
http://www.davidhayden.com/blog/dave/archive/2006/05/26/2973.aspxWillst Du das ganze aus Excel heraus erledigen (aber weiterhin .NET verwenden), mußt Du ein VSTO Add-In schreiben.
Gruß
Marcel- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 14. Juni 2011 15:20
-
Danke schön,
also so ganz werd ich noch nicht schlau aus den Beispielen.
Mit VSTO habe ich schon Erfahrung gemacht. Da will ich halt auf jeden Fall vermeiden, das Blatt mit Excel.Range zugriffen zu füllen.
Was ich bisher verstanden habe ist, das ich auf das Excel Sheet einen Connectionstring machen kann, auf die SqlTabelle mach ich das ja auch.
Nur wie ich die 2 Connectionstrings miteinander zusammen bringe ist mir noch nicht klar.
Grüße
-
> Danke schön
Gern.
> Mit VSTO habe ich schon Erfahrung gemacht. Da will ich halt auf jeden Fall vermeiden, das Blatt mit Excel.Range zugriffen zu füllen.
DataBinding über ListObject funktioniert m.E. relativ gut.
ListObject Control:
http://msdn.microsoft.com/en-us/library/2ttzcbhb.aspx
Gruß
Marcel -
Hallo C.,
Wenn Du nicht während der Dateneingabe durch den Benutzer die Datenbank aktualisieren mußt, würde auch ich Dir den Weg über den OleDb Managed Data Provider und ADO.NET empfehlen. Es gibt viele Beispiele dazu, ich greife willkürlich eines heraus:
Reading and Writing Excel Spreadsheets Using ADO.NET C# DbProviderFactory:
http://www.davidhayden.com/blog/dave/archive/2006/05/26/2973.aspxWillst Du das ganze aus Excel heraus erledigen (aber weiterhin .NET verwenden), mußt Du ein VSTO Add-In schreiben.
Gruß
MarcelHallo Marcel,
danke für die Antwort, jetzt hab ich auch mal wieder Zeit gehabt das ganze zu testen.
Ich krieg aber diesen Provider=Microsoft.Jet.OLEDB.4.0 nicht zum laufen, er scheint bei mir nicht installiert zu sein.
Grüße -
Kann es sein, dass Dein Programm mit 64 Bit Läuft? Wenn ja, dann geht die Jet nicht. Sie will nur 32 Bit.--Viele GruessePeter------=_NextPart_000_01C7_01CC4550.621C8C00Content-Type: text/html;charset="utf-8"Content-Transfer-Encoding: quoted-printable<HTML><HEAD></HEAD><BODY dir=ltr>Kann es sein, dass Dein Programm mit 64 Bit Läuft? Wenn ja, dann geht dieJet nicht. Sie will nur 32 Bit.--
VieleGruesse
Peter -
Hallo Peter,
nein tut es nicht, mein Rechner ist etwas älter. :)
Ich sollte allerdings auch nicht mit dem 4.0 arbeiten sondern mit dem 12.0.
Momentan bekomme ich die Fehlermeldung das das Tabellenblatt nicht gefunden wird.
Grüße
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;"+ "Data Source=ExcelWorkbook.xlsx;" + "Extended Properties=\"Excel 12.0 Xml;HDR=YES;\""; DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb"); using (DbConnection connection = factory.CreateConnection()) { connection.ConnectionString = connectionString; using (DbCommand command = connection.CreateCommand()) { command.CommandText = "SELECT * FROM [Tabelle1$]"; connection.Open(); using (DbDataReader dr = command.ExecuteReader()) { while (dr.Read()) { Debug.WriteLine(dr.ToString()); } } } }