Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Excel mit ADO (https://www.delphipraxis.net/173581-excel-mit-ado.html)

jangbu 5. Mär 2013 17:56

Datenbank: MSSQL • Version: 2000 • Zugriff über: ADO

Excel mit ADO
 
Hallo,

lese via ADO auf Excel-Daten aus. So weit so gut. Wenn in einer ExcelZelle > 256 Zeichen stehen, gibt das Dataset.Field (da string) ab dem 256. Zeilen '?' aus. Feldtyp AsAnsiString gibt es nicht. Gibt es eine Möglichkeit doch Felder >256 Zeichen korrekt einzulesen?


[DELPHI]
procedure TFRM_AM_Administration.ExcelExportClick(Sender: TObject);
Var ExcelConnection : TADOConnection;
Dataset : TADODataset;
i : integer;
ADOQuery : TADOQuery;
begin
ExcelConnection := TADOConnection.Create(nil);
DataSet := TADODataSet.Create(nil);

ExcelConnection.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'
+ 'Data Source=U:\test.xls;'
+ 'Mode=ReadWrite;'
+ 'Extended Properties="Excel 8.0;HDR=Yes";'
// + 'LoginPrompt=FALSE;'
+ 'Persist Security Info=False';

DataSet.Connection := ExcelConnection;

DataSet.CommandText := 'SELECT * FROM [Sheet1$]';
DataSet.Open;
DataSet.First;

while (DataSet.Eof = false) do
begin
showmessage(DataSet.Fields[0].Text);
showmessage(DataSet.FieldByName('ColumThree').AsSt ring);

DataSet.Next;
end;
DataSet.Close;
/DELPHI]

Bummi 5. Mär 2013 18:28

AW: Excel mit ADO
 
Die Jetengine untersucht per Default die ersten 8 Zeilen einer "Tabelle" um den Typ zu erraten. Der Defaultwert ist einstellbar unter
HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engi nes\Excel\TypeGuessRows
bzw. bei 64 - Bit
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ Jet\4.0\Engines\Excel\TypeGuessRows

Wenn Du die Möglichkeit hast die Zeile mit dem längsten Zelleninhalt , oder zumindest eine Zeile mit einem Inhalt > 255 Zeichen damit der Typ Memo erkannt wird, nach oben zu bekommen kannst Du Dir eine Anpassung in der Registry sparen.

jangbu 5. Mär 2013 19:05

AW: Excel mit ADO
 
erst mal danke für die schnelle antwort.

Bernhard Geyer 5. Mär 2013 19:45

AW: Excel mit ADO
 
Zitat:

Zitat von Bummi (Beitrag 1206003)
Der Defaultwert ist einstellbar unter HKEY_LOCAL_MACHINE\...

Unpraktisch da normale Anwendunge da nichts ändern dürfen das sie normalerweise ohne Adminrechte gestartet werden.

Ich würde ADO links liegen lassen und über die COM/Automatisierungschnittelle oder mit nativen xls/xlsx-Readern arbeiten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz