1

Ich möchte ein AddIn für Excel erstellen, die die aktuellen Datenblätter lesen und dann in die Datenbank einfügen kann. Die Datenbankverbindung erfordert den Speicherort der Datei. Daher kann dieser Ansatz nicht angewendet werden, da ich die Datei, die ich gerade geöffnet habe, senden muss und den Dateipfad nicht angeben kann.Excel-Add-in Übertragung von Daten aus den Blättern in die Datenbank: Dateipfad Problem

Und außerdem muss ich die Daten jeder Spalte in separate Spalte der Tabelle in SQL Server-Datenbank eingefügt werden. Irgendwelche Vorschläge und Code zu helfen?

+1

omg, schauen Titel dieser Frage! – Sadegh

+0

Man muss den Titel ändern, die Leute werden nicht auf einen Link mit einem solchen Titel klicken. – Galilyou

+0

Ich änderte den Titel und machte einige Formatierungen, um es lesbar zu machen. – splattne

Antwort

0

Muss das in Excel gemacht werden? Sie können dies mit einer einfachen ADO.NET-App tun, indem Sie einen OleDb-Provider für Excel und einen anderen für SQL angeben.

Example

Es gibt lots of articles auf der Technik. Sie können dasselbe mit minimalem Code in SQL Server Integration Services (SSIS, zuvor bekannt als DTS) tun. HE ist ein old article on that.

Sie können dies auch innerhalb von Excel tun. Mit VS2005 würden Sie VSTO - Visual Studio Tools für Office verwenden; Ich denke, die Funktion von VSTO ist in VS2008 Professional enthalten. Mit VS + VSTO (oder VS2008) können Sie AddIns für Office-Anwendungen einschließlich Excel erstellen. Innerhalb des AddIns können Sie tun, was Sie im Code mögen, einschließlich eines System.Data.SqlClient, um Daten in SQL Server einzufügen.

1

Sie können ein Excel-Add-In mit Excel mithilfe von VBA erstellen. Sie müssen einen Verweis auf Microsoft ActiveX Data Objects (ADO) im VBA-Editor hinzufügen (über Extras -> Verweise), und dann haben Sie vollen Zugriff auf die Objekte Connection, Command, RecordSet usw..

Wenn ich dies tun würde, würde ich den Benutzer die Datenbank/Tabelle/Spalten für jeden Import Batch mithilfe eines Formulars angeben. Dann würde ich ein Connection-Objekt erstellen und jede Zeile der Daten durchlaufen, um einen Einfügebefehl basierend auf den Daten in der Zeile zu erstellen und auszuführen.

Wenn Sie fertig sind, haben Sie die Möglichkeit, die fertige Arbeitsmappe als eine Excel-Add-In-Datei (xla) zu speichern, die an andere verteilt werden kann. Hier

ist ein Beispiel, was der Einsatz Code aussehen kann:

Dim conn As New Connection 
Dim comm As New Command 
conn.Open YourConnectionString 
Set comm.ActiveConnection = conn 
comm.CommandText = "insert <table> (<column1>, <column2>, <column3>, ..., <columnN>) values (" + <value1> + ", '" + <value2> + "', " + <value3> + ", '" + <valueN>+ "')" 
comm.Execute 
conn.Close