Ja,
nimm eine TADOConnection und eine TADOTable.
Damit kannst du jede Excel Arbeitsmappe öffnen, ohne das Excel installiert sein muss.
Ado liest die Excel Arbeitsbereichsseiten sauber ein und interprätiert sogar berechnete Felder (Formeln) richtig.
Öffnen kannst du die XLS so ..
Delphi-Quellcode:
// Opendialog öffnen und AdoConnection verbinden
Adoconn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
'Provider=Microsoft.Jet.OLEDB.4.0; ' +
'Data Source=' + Opendialog.Filename + ';' +
'Extended Properties=Excel 8.0; ' + //<< immer Excel 8.0 !!!
'Persist Security Info=False';
Adoconn.open;
// Eine Combobox (xlsWorksheets mit den Arbeitsbereichsseiten der Excel Arbeitsmappe füllen
xlsWorksheets.Enabled := Adoconn.Connected;
if Adoconn.Connected then
begin
Adoconn.GetTableNames(xlsWorksheets.Items, true);
end;
// Wenn es mindestens eine Arbeitsbereichsseite gibt > Auswählen und Öffnen
...
User die gewünschte Arbeitsbereichsseite wählen lassen
ggf. automatisch xlsWorksheets.Items[0] verwenden, falls es nur eine Arbeitsbereichsseite gibt
...
if xlsWorksheets.items.count =0 then
begin
Showmessage('In der gewählten Arbeitsmappe sind keine Arbeitsbereichsseiten verfügbar');
exit;
end
else begin
With AdoTableXLS do
begin
close;
Connection:=Adoconn;
tablename:=xlsWorksheets.items[xlsWorksheets.itemindex];
open;
end;
end;