07.11.2010, 08:40
|
|
Новичок
|
|
Регистрация: 16.09.2010
Сообщения: 61
Репутация: 10
|
|
RE:-)
Попробуй этот код. Подключи модуль Exel97 и пользуйся на здоровье!
PHP код:
procedure TForm13.BitBtn1Click(Sender: TObject);
Var ExcelApplication:Variant;
i1,i2,i3,i4,i,r: Integer;
t,t2,t1: string;
begin
r:=0;
if form1.RzSelectFolderDialog1.Execute then t1:=form1.RzSelectFolderDialog1.SelectedPathName+'\'+form13.Edit1.Text+'.xls';
form13.Label2.Caption:=t1;
if fileexists(t1) then
begin
if messagedlg('Данный файл уже существует. Перезаписать?', mtwarning,[mbYes,mbNo,MbCancel],0)=idYes
then
begin
try
ExcelApplication:= GetActiveOleObject('Excel.Application');
except
ExcelApplication:= CreateOleObject('Excel.Application');
end;
dm.Query2.First;
while not dm.Query2.Eof do
begin
r:=r+1;
dm.Query2.Next;
end;
ExcelApplication.WorkBooks.open(t1);
for i:=1 to 10 do
ExcelApplication.Cells[1,i].value:=dm.Query2.Fields[i-1].FieldName;
dm.Query2.First;
while not dm.Query2.Eof do
begin
for i:=2 to r+1 do begin
for i1:=0 to 9 do
ExcelApplication.Cells[i,i1+1].value:=dm.Query2.Fields[i1].AsString;
dm.Query2.Next;
end;
ExcelApplication.Cells[r+2,1].value:='Агрегации';
ExcelApplication.Cells[r+3,1].value:='Сумма';
ExcelApplication.Cells[r+4,1].value:='Среднее значение';
ExcelApplication.Cells[r+5,1].value:='Максимум';
ExcelApplication.Cells[r+6,1].value:='Минимум';
ExcelApplication.Cells[r+3,2].value:='=СУММ(J2:'+'J'+inttostr(r+1)+')';
ExcelApplication.Cells[r+4,2].value:='=СРЗНАЧ(J2:'+'J'+inttostr(r+1)+')';
ExcelApplication.Cells[r+5,2].value:='=МАКС(J2:'+'J'+inttostr(r+1)+')';
ExcelApplication.Cells[r+6,2].value:='=МИН(J2:'+'J'+inttostr(r+1)+')';
end;
end else begin
try
ExcelApplication:= GetActiveOleObject('Excel.Application');
except
ExcelApplication:= CreateOleObject('Excel.Application');
end;
dm.Query2.First;
while not dm.Query2.Eof do
begin
r:=r+1;
dm.Query2.Next;
end;
ExcelApplication.WorkBooks.open(t1);
for i:=1 to 10 do
ExcelApplication.Cells[1,i].value:=dm.Query2.Fields[i-1].FieldName;
dm.Query2.First;
while not dm.Query2.Eof do
begin
for i:=2 to r+1 do begin
for i1:=0 to 9 do
ExcelApplication.Cells[i,i1+1].value:=dm.Query2.Fields[i1].AsString;
dm.Query2.Next;
end;
ExcelApplication.Cells[r+2,1].value:='Агрегации';
ExcelApplication.Cells[r+3,1].value:='Сумма';
ExcelApplication.Cells[r+4,1].value:='Среднее значение';
ExcelApplication.Cells[r+5,1].value:='Максимум';
ExcelApplication.Cells[r+6,1].value:='Минимум';
ExcelApplication.Cells[r+3,2].value:='=СУММ(J2:'+'J'+inttostr(r+1)+')';
ExcelApplication.Cells[r+4,2].value:='=СРЗНАЧ(J2:'+'J'+inttostr(r+1)+')';
ExcelApplication.Cells[r+5,2].value:='=МАКС(J2:'+'J'+inttostr(r+1)+')';
ExcelApplication.Cells[r+6,2].value:='=МИН(J2:'+'J'+inttostr(r+1)+')';
end;
end;
end;
close;
end;
|