PDA

View Full Version : Delphi - leggere dati da un foglio Excel


nic96
12-01-2003, 23:41
Ciao a tutti,

sto iniziando a lavorare con delphi.
Premetto che la mia esperienza con linguaggi di tipo visuale è davvero molto limitata.
Dovrei leggere dei dati da un foglio Excel ma non ho idea su come fare.
Potreste aiutarmi con qualche esempio o indicandomi dove posso trovare un po di documentazione adatta alle mie scarse conoscenze su questo tipo di programmazione?

Grazie in anticipo
nic96

atragon
15-01-2003, 12:19
Ti posto un po' di codice relativo ad una mia applicazione che avevo scritto tempo fa. Al di là delle personalizzazioni e di qualche "aborto", non è certo un esempio di bella programmazione :rolleyes: può essere una utile traccia di come iniziare a lavorare su Excel via Delphi.


procedure TForm1.Button1Click(Sender: TObject);
var
XlApp1, xlApp2 : Variant;
f : textfile;
k, kan1, kas1, tmpkan1 : integer;
ax,bx,cx,dx,ex,fx,gx,ay,by,cy,dy,ey,fy,gy : string[6];
linea, linea2 : string[60];
begin
XlApp1 := CreateOleObject('Excel.Application');
XlApp2 := CreateOleObject('Excel.Application');
XlApp1.WorkBooks.Open('c:\anagrafe.xls');
XlApp2.WorkBooks.Open('c:\utenze_non_dom_.xls');
assignfile(f,'c:\match.txt');
rewrite(f);
{bx := 'b1';
Edit1.Text := XlApp2.Range[bx];}
tmpkan1 := 1;
for kas1 := 1 to 11843 do
begin
for k := 1 to 60 do linea[k] := ' ';
for k := 1 to 60 do linea2[k] := ' ';
ax := 'A'+IntToStr(kas1);
bx := 'B'+IntToStr(kas1);
cx := 'C'+IntToStr(kas1);
dx := 'D'+IntToStr(kas1);
linea := XlApp2.Range[bx];
for kan1 := tmpkan1 to 29237 do
begin
ay := 'A' + IntToStr(kan1);
by := 'B' + IntToStr(kan1);
linea2 := XlApp1.Range[by];
if linea = linea2 then
begin
write(f,linea + ';');
for k := 1 to 60 do linea2[k] := ' ';
dy := 'D' + IntToStr(kan1);
ey := 'E' + IntToStr(kan1);
fy := 'F' + IntToStr(kan1);
gy := 'G' + IntToStr(kan1);
linea2 := XlApp1.Range[dy];
write(f,linea2 + ';');
linea2 := XlApp1.Range[ey];
write(f,linea2 + ';');
linea2 := XlApp1.Range[fy];
write(f,linea2 + ';');
linea2 := XlApp1.Range[gy];
write(f,linea2 + ';');
linea2 := XlApp1.Range[ay];
write(f,linea2 + ';');
linea2 := XlApp2.Range[cx];
write(f,linea2 + ';');
linea2 := XlApp2.Range[ax];
write(f,linea2 + ';');
linea2 := XlApp2.Range[dx];
writeln(f,linea2 + ';');
tmpkan1 := kan1 - 1;
break;
end;
if linea2 > linea then
begin
tmpkan1 := kan1 - 1;
break;
end;
end;
Edit1.Text := linea;
Edit2.Text := linea2;
Application.ProcessMessages;
end;
XlApp1.Quit;
XlApp2.Quit;
closefile(f);
end;

nic96
15-01-2003, 21:52
grazie dell'aiuto

nic96