Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Excel über ODBC

191 views
Skip to first unread message

Sven Heinemann

unread,
Mar 3, 2004, 4:42:36 AM3/3/04
to
Hi NG,

weiß irgendjemand, wie man ERFOLGREICH über ODBC auf eine Excel-File
zugreifen kann?

Gruß
Sven


Jürgen Beck

unread,
Mar 3, 2004, 5:13:15 AM3/3/04
to
Sven Heinemann wrote:
> weiß irgendjemand, wie man ERFOLGREICH über ODBC auf eine Excel-File
> zugreifen kann?

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

Sven Heinemann

unread,
Mar 3, 2004, 6:05:11 AM3/3/04
to
Okay, soweit so gut. Nur eine Frage beim ODBC-Connection-String.
Für was steht "DefaultDir" ganz zum Schluß???

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...

Jürgen Beck

unread,
Mar 3, 2004, 7:00:22 AM3/3/04
to
Sven Heinemann wrote:
>> 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"""

> 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

Sven Heinemann

unread,
Mar 3, 2004, 7:12:15 AM3/3/04
to
Hier mein Code:
string connstr= "Driver={Microsoft Excel
Driver(*.xls)};DriverId=790;Dbq="+filename
+";DefaultDir=C:\\Windows\\System\\"; //+_appPath;

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...

Heiko Priebe

unread,
Mar 3, 2004, 7:36:33 AM3/3/04
to
Hallo Sven,

"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


Jürgen Beck

unread,
Mar 3, 2004, 7:59:25 AM3/3/04
to
Sven Heinemann wrote:
> string connstr= "Driver={Microsoft Excel
> Driver(*.xls)};DriverId=790;Dbq="+filename
> +";DefaultDir=C:\\Windows\\System\\"; //+_appPath;

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.

Sven Heinemann

unread,
Mar 3, 2004, 8:01:21 AM3/3/04
to
Hi Heiko.

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...

Heiko Priebe

unread,
Mar 3, 2004, 8:12:06 AM3/3/04
to
Hallo Sven,

"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

unread,
Mar 8, 2004, 3:13:28 AM3/8/04
to
Jetzt habe ich noch ein weiteres Problem:
Leider kann ich nicht auf die Zellen zugreifen. Ich weiß einfach nicht, wie
ich da ran komme. Mit Cells[0,1] komme ich nicht weit.

"Sven Heinemann" <shein...@abm-soft.de> schrieb im Newsbeitrag

news:ulR%23h%23RAEH...@TK2MSFTNGP12.phx.gbl...

0 new messages