weiß irgendjemand, wie man ERFOLGREICH über ODBC auf eine Excel-File
zugreifen kann?
Gruß
Sven
Hallo Sven,
auf www.connectionstrings.com finden sich folgende zwei Möglichkeiten, die
funktionieren sollten:
ODBC:
Driver={Microsoft Excel Driver
(*.xls)};DriverId=790;Dbq=C:\MyExcel.xls;DefaultDir=c:\mypath;"
OLE DB:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended
Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
"HDR=Yes;" indicates that the first row contains columnnames, not data
"IMEX=1;" tells the driver to always read "intermixed" data columns as text
TIP! SQL syntax: "SELECT * FROM [sheet1$]" - i.e. worksheet name followed by
a "$" and wrapped in "[" "]" brackets.
Das sollte helfen. :-)
--
Jürgen Beck
MCSD.NET, MCDBA, MCSE, MCT
MCP CRM Application/Installation/Customization
www.Juergen-Beck.de
Ich bekomme nämlich die Fehlermeldung:
ERROR [IM002] [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde
nicht gefunden, und es wurde kein Standardtreiber angegeben
Gruß
Sven
"Jürgen Beck" <nospam2N...@Juergen-Beck.de> schrieb im Newsbeitrag
news:OtuasgQA...@TK2MSFTNGP10.phx.gbl...
> Okay, soweit so gut. Nur eine Frage beim ODBC-Connection-String.
> Für was steht "DefaultDir" ganz zum Schluß???
DefaultDir ist das Arbeitsverzeichnis das Du wahrscheinlich auch weglassen
kannst.
Siehe dazu auch:
http://msdn.microsoft.com/library/en-us/odbc/htm/odbcjetsdk_41.asp
http://msdn.microsoft.com/library/en-us/odbc/htm/odbcjetsdk_49.asp
http://msdn.microsoft.com/library/en-us/odbc/htm/odbcjetsdk_50.asp
string selectCommand = "Select * FROM ";
System.Console.WriteLine(connstr);
MessageBox.Show(connstr);
OdbcConnection conn = new OdbcConnection(connstr);
System.Console.WriteLine("Conn öffnen");
conn.Open();
System.Console.WriteLine("Conn offen");
OdbcDataAdapter adp = new OdbcDataAdapter(selectCommand,connstr);
System.Data.DataTable table = new System.Data.DataTable();
adp.Fill(table);
foreach(DataRow dtarow in table.Rows)
{
System.Console.WriteLine(dtarow["A"].ToString());
}
MessageBox.Show("Connected");
conn.Close();
Nach wie vor bekomme ich bei folgendem Code nur die Fehlermeldung.
ERROR [IM002] [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde
nicht gefunden, und es wurde kein Standardtreiber angegeben
"Jürgen Beck" <nospam2N...@Juergen-Beck.de> schrieb im Newsbeitrag
news:edyKlcRA...@TK2MSFTNGP10.phx.gbl...
"Sven Heinemann" <shein...@abm-soft.de> schrieb im Newsbeitrag
news:OetqdPQA...@TK2MSFTNGP09.phx.gbl...
> weiß irgendjemand, wie man ERFOLGREICH über ODBC auf eine Excel-File
> zugreifen kann?
Wieso nicht über OLEDB? Sollte wesentlich schneller sein.
1. ConnectionString erstellen
<code>
string sConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;"
+ "User ID=;"
+ "Password=;"
+ "Data Source=" + FileName + ";"
+ "Extended Properties=Excel 8.0;";
</code>
2. Connection öffnen
<code>
ConnOleDb = new OleDbConnection(connectionString);
ConnOleDb.Open();
</code>
3. Auf Daten zugreifen (Beispiel: Schema auslesen)
<code>
DataTable dataTable =
ConnOleDb.GetOleDbSchemaTable(OleDbSchemaGuid.Views, null);
</code>
oder SQL ausführen
<code>
string sql = "SELECT * FROM Artikel";
OleDbCommand cmd = new OleDbCommand(sql, ConnOleDb);
OleDbDataReader r = cmd.ExecuteReader(CommandBehavior.CloseConnection);
...
</code>
4. Connection schliessen
<code>
ConnOleDb.Close()
</code>
Viele Grüße
Heiko Priebe
---
http://www.heikopriebe.de
Hallo Sven,
Compuzter sind dumm. Du musst Ihnen alles ganz genau erklären und zwar
inklusive aller Lerzeichen. :-)
Bei Dir fehlte eines zwischen "Driver" und "(*.xls)"
Folgender Code funktioniert:
///
string connstr= @"Driver={Microsoft Excel Driver
(*.xls)};DriverId=790;DBQ=C:\Test.xls";
string selectCommand = "Select * FROM [Kunden$]";
OdbcConnection conn = new OdbcConnection(connstr);
OdbcDataAdapter adp = new OdbcDataAdapter(selectCommand, connstr);
DataTable table = new DataTable();
adp.Fill(table);
dataGrid1.DataSource = table;
\\\
Meine Excel-Datei heißt Test.xls und sieht so aus:
Arbeitsblatt "Kunden":
SpalteA SpalteB
10 Müller
20 Meier
30 Schmidt
Auch ich würde Dir natürlich zu OLE DB raten. Heiko hat Dir ja bereits ein
schönes Beispiel gepostet.
In meinem ersten Posting findest Du ebenfalls Infos zu dem OLE DB-Provider.
Bin gerade dabei die OleDB-Verbindung zu testen.
Leider bekomme ich beim Ausführen eine Fehlermeldung, mit der ich nichts
anzufangen weiß:
Installierbares ISAM nicht gefunden.
Gruß
Sven
"Heiko Priebe" <prihei...@web.de> schrieb im Newsbeitrag
news:O3BFrwRA...@TK2MSFTNGP10.phx.gbl...
"Sven Heinemann" <shein...@abm-soft.de> schrieb im Newsbeitrag
news:ulR#h#RAEHA...@TK2MSFTNGP12.phx.gbl...
> Installierbares ISAM nicht gefunden.
Hast Du den aktuellsten Treiber installiert?
http://www.microsoft.com/downloads/details.aspx?FamilyID=83e8f178-94c9-4e7d-
b0b6-a8a94c4eb912&DisplayLang=de
Anonstens schau mal hier:
http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid
=28001860
http://support.microsoft.com/default.aspx?scid=kb%3Bde%3BD35459
Gruß
Heiko Priebe
"Sven Heinemann" <shein...@abm-soft.de> schrieb im Newsbeitrag
news:ulR%23h%23RAEH...@TK2MSFTNGP12.phx.gbl...