Ich versuche eine Methode zu verwenden, die ich aus CodePlex gezogen habe, die Daten aus Excel in eine SQL-Tabelle exportiert. Ich habe einige kleinere Codeanpassungen vorgenommen, aber ich kann immer noch nicht die Daten importieren. Sieht irgendjemand irgendwas mit meiner Syntax eklatant? Vielen Dank.C# Excel-Daten in SQL importieren Tabelle
static void Main(string[] args)
{
importdatafromexcel("C:/Users/usname/Desktop/TestDirectories/FileSystemWatcher/Test_123.xlsx");
}
public static void importdatafromexcel(string excelfilepath)
{
//declare variables - edit these based on your particular situation
string ssqltable = "Name";
// make sure your sheet name is correct, here sheet name is sheet1, so you can change your sheet name if have different
string myexceldataquery = "select Name,EmployeeID from [sheet1$]";
try
{
//create our connection strings
string sexcelconnectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" + excelfilepath + ";Extended Properties=" + "\"excel 8.0;hdr=yes;\"";
//MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelfilepath + ";Extended Properties=Excel 8.0;HDR=YES'");
string ssqlconnectionstring = "server=DESKTOP-6CIMC97;Initial Catalog=TestDB;integrated security=true;connection reset = false";
//<add name="ProductContext" connectionString="Server=DESKTOP-6CIMC97; Initial Catalog=ProductApps; Integrated Security=True" providerName="System.Data.SqlClient" />
//execute a query to erase any previous data from our destination table
string sclearsql = "delete from " + ssqltable;
SqlConnection sqlconn = new SqlConnection(ssqlconnectionstring);
SqlCommand sqlcmd = new SqlCommand(sclearsql, sqlconn);
sqlcmd.Connection.Open();
sqlcmd.ExecuteNonQuery();
sqlconn.Close();
//series of commands to bulk copy data from the excel file into our sql table
OleDbConnection oledbconn = new OleDbConnection(sexcelconnectionstring);
OleDbCommand oledbcmd = new OleDbCommand(myexceldataquery, oledbconn);
oledbconn.Open();
OleDbDataReader dr = oledbcmd.ExecuteReader();
SqlBulkCopy bulkcopy = new SqlBulkCopy(ssqlconnectionstring);
bulkcopy.DestinationTableName = ssqltable;
bulkcopy.WriteToServer(dr);
//while (dr.Read())
//{
// bulkcopy.WriteToServer(dr);
//}
oledbconn.Close();
}
catch (Exception ex)
{
//handle exception
}
}
Sie müssen genauer auf das Verhalten eingehen, das Sie tatsächlich erhalten. Hast du es mit einem Debugger versucht? –
Ich habe es versucht, bin aber neu im Programmieren und nicht das Beste mit den Breakpoints. Ich habe eins zur Excel-Verbindung und eins zur eigentlichen Methode in Main hinzugefügt, aber ich sehe keine Fehler, wenn ich den Mauszeiger halte, nachdem es unterbrochen wurde. Wenn ich den Code ausführe, öffnet sich die Konsolen-App und schließt sich nach etwa einer Sekunde, als wäre sie erfolgreich, aber wenn ich die Tabelle überprüfe, sind keine Daten vorhanden. – AndrewC10
Das sieht nach einer Möglichkeit aus, Debuggen zu lernen :-) Versuchen Sie, Ihre eigene Leserschleife zu erstellen, um zu sehen, ob die Daten tatsächlich aus der Quelltabelle gelesen werden können. Legen Sie manuell zufällige Daten in die Tabelle 'Name', um zu sehen, ob sie zumindest gelöscht werden. Validiere einfach jeden Schritt des Gesamtprozesses. –