Wählen Sie Spalten mit Mehreren Bereichen von Excel mithilfe von OleDb
Meine aktuelle Anforderung ist, die ich brauche, um wählen Sie mehrere Bereiche aus einem excel-sheet(DUMMY.xls) in einer einzigen Abfrage und legen Sie Sie in eine DataTable(fooData1) :
Wie Sie sehen können aus dem Bild oben, ich habe Spalten von A bis F.
Deshalb bin ich herausfiltern der Spalten von A bis B und von D bis F in einer einzigen dataTable(fooData1).
Die Inhalte der resultierende datatable sollte wie:
NAME ID Date Hobby COLOR
DEEPAK 1 Coding Black
ASTHA 2 Singing Red
GAURAV 3 Dancing Blue
BHAVESH 4 6/29/2007 Painting Green
Mein Code geht so:
und während der Ausführung der Abfrage die folgende Fehlermeldung feuert bis
"Zeichen nach Ende von SQL-Anweisung".
DataTable fooData1 = new DataTable();
System.Data.OleDb.OleDbConnection dbConnection =
new System.Data.OleDb.OleDbConnection
(@"Provider=Microsoft.Jet.OLEDB.4.0;"
+ @"Data Source=C:\Dummy.xls;"
+ @"Extended Properties=""Excel 8.0;HDR=Yes;""");
dbConnection.Open();
try
{
string strSql = "SELECT * FROM [Sheet1$A:B] ; select * from[Sheet1$D:F]";
OleDbCommand cmd = new OleDbCommand(strSql);
cmd.Connection = dbConnection;
System.Data.OleDb.OleDbDataAdapter dbAdapter1 = new System.Data.OleDb.OleDbDataAdapter(cmd);
dbAdapter1.Fill(fooData1);
}
finally
{
dbConnection.Close();
}
- Welchen Fehler hast du bekommen?
- während der Ausführung der Abfrage die folgende Fehlermeldung feuert up "Zeichen nach Ende von SQL-Anweisung."
- Haben Sie versuchen Sie es mit einer Abfrage? Nur
SELECT * FROM [Sheet1$A:B]
, denn wie es aussieht, wird es nicht akzeptieren, querys, die nach dem Semikolon. - Wie ich schon sagte, ich muss Daten aus mehreren Bereichen.. und ja die Abfrage SELECT * FROM [Tabelle1$A:B] funktioniert gut !!
SELECT * FROM [Sheet1$A:B],[Sheet1$E:F]
vielleicht funktioniert.- Ich habe auch schon versucht.. aber es dauert Duplikate, d.h. für alle [Tabelle1$A:B] es tritt mit jeder Zeilen von [Sheet1$E:F]
- Wie wäre
SELECT * FROM [Sheet1$A:B,Sheet1$E:F]
? Ich habe versucht, in meiner Excel -, es erscheint die Verwendung,
separate Auswahl. - keine buddy-sein einen syntax-Fehler 🙁
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann es lösen, indem Sie SQL verwenden
UNION ALL
.SELECT * FROM [Sheet1$A:B] UNION ALL select * from[Sheet1$E:F]
Ich Tests gemacht, die Daten wie:
und der DataTable habe:
(Seit die option mit bestimmten
HDR=Yes
, die erste Zeile ist der header),Hoffe, dass kann Ihr problem lösen. 🙂
fooData1.Columns.Remove("SALARY")
.Hey, als für Ihre Frage wählen Sie einzelne Spalten durch die Verwendung von F und die Spalte Anzahl. Zum Beispiel, "SELECT * FROM [Tabelle1$A:B] ; select * from[Sheet1$D:F]"; könnte wieder schreiben, wie: