Exportando relatorios para o Excel com delphi
Ola Galera
Alguem poderia me ajudar.
O que ha de errado no codigo abaixo , se no meu select eu trouxer somente 3 registros da tudo certo se for mais de 3 list index out of bounds (3)
Desde já agradeço
procedure TForm1.ExportaExcel(dataset: tdataset);
var
J, I: Integer;
MsExcel: Variant;
begin
MsExcel := CreateOleObject(Excel.Application);
MsExcel.workbooks.add;
for I := 0 to dataset.Fields.Count - 1 do
begin
MsExcel.Activesheet.cells[1, I + 1].value := dataset.Fields[I].DisplayLabel;
MsExcel.Activesheet.cells[1, I + 1].font.bold := true;
MsExcel.Activesheet.cells[1, I + 1].interior.color := ColorToRGB(clYellow);
MsExcel.Activesheet.cells[1, I + 1].borders.linestyle := 1;
end;
dataset.First;
for J := 0 to dataset.RecordCount - 1 do
begin
for I := 0 to dataset.RecordCount - 1 do
begin
MsExcel.Activesheet.cells[j + 2, i + 1].value := dataset.Fields[I].AsString;
MsExcel.Activesheet.cells[j + 2, i + 1].interior.color := ColorToRGB(clInfoBk);
end;
dataset.Next;
end;
MsExcel.Visible := true;
end;
Alguem poderia me ajudar.
O que ha de errado no codigo abaixo , se no meu select eu trouxer somente 3 registros da tudo certo se for mais de 3 list index out of bounds (3)
Desde já agradeço
procedure TForm1.ExportaExcel(dataset: tdataset);
var
J, I: Integer;
MsExcel: Variant;
begin
MsExcel := CreateOleObject(Excel.Application);
MsExcel.workbooks.add;
for I := 0 to dataset.Fields.Count - 1 do
begin
MsExcel.Activesheet.cells[1, I + 1].value := dataset.Fields[I].DisplayLabel;
MsExcel.Activesheet.cells[1, I + 1].font.bold := true;
MsExcel.Activesheet.cells[1, I + 1].interior.color := ColorToRGB(clYellow);
MsExcel.Activesheet.cells[1, I + 1].borders.linestyle := 1;
end;
dataset.First;
for J := 0 to dataset.RecordCount - 1 do
begin
for I := 0 to dataset.RecordCount - 1 do
begin
MsExcel.Activesheet.cells[j + 2, i + 1].value := dataset.Fields[I].AsString;
MsExcel.Activesheet.cells[j + 2, i + 1].interior.color := ColorToRGB(clInfoBk);
end;
dataset.Next;
end;
MsExcel.Visible := true;
end;
Carlos Faria
Curtidas 0
Respostas
Bruno Leandro
28/04/2012
voce precisa debugar o codigo, mas parece ser no J + 2
GOSTEI 0
Carlos Faria
28/04/2012
Olá amigo esse erro eu já corrigi agora ficou pior se a data e menor que 14/05/2012 exemplo o formato muda para mm/dd/yyyy se é igual ou maior que 14/05/2012 ai sim vem no padrão de data português do brasil
GOSTEI 0
Joel Rodrigues
28/04/2012
Esse segundo loop está certo? Você está lendo duas vezes a quantidade de registros. Nâo seria a quantidade de colunas no loop interno?
Veja se é possível já trazer a data do banco no formato desejado. Deve haver alguma função no banco para isso.
for I := 0 to dataset.ColumnCount do
Veja se é possível já trazer a data do banco no formato desejado. Deve haver alguma função no banco para isso.
GOSTEI 0