El código presentado y explicado a continuación fué desarrollado por mi, con ayuda de varios del foro
Pasos para exportar de 1 DbGrid1 a Excel
1) En la Pestaña Servers Buscamos y agregamos un componente llamado TExcelApplication
2) Esta demás decir que ya debe estar lista la consulta Sql sin errores
3) Agregar a la Uses ComObj
4) Declaramos las siguientes variables:
Cita:
Libro : _WORKBOOK;
Hoja : _WORKSHEET;
i:Integer;
|
5) agregamos este código dentro del begin y end del procedure, esta nos sirve para crear el archivo de excel sin Nombre, si le quieres poner nombre cambia Null por tu variable.
i nos manejará el número de filas
Cita:
i:=0;
Libro := ExcelApplication1.Workbooks.Add(Null, 0);
|
6)luego agregamos esta nueva linea de código en donde elegimos en que Hoja vamos a trabajar
Cita:
Hoja := Libro.Sheets[1] as _WORKSHEET;
|
7) Luego agregamos este código:
Cita:
with Query1 do
begin
first;
while not EOF Do
begin
i:=i+1;
Hoja.Cells.Item[i,1]:=DBGrid1.Fields[0].AsString;
Hoja.Cells.Item[i,2]:=DBGrid1.Fields[1].AsString;
Hoja.Cells.Item[i,3]:=DBGrid1.Fields[2].AsString;
Hoja.Cells.Item[i,4]:=DBGrid1.Fields[3].AsString;
Hoja.Cells.Item[i,5]:=DBGrid1.Fields[4].AsString;
Hoja.Cells.Item[i,6]:=DBGrid1.Fields[5].AsString;
Hoja.Cells.Item[i,7]:=DBGrid1.Fields[6].AsString;
Hoja.Cells.Item[i,8]:=DBGrid1.Fields[7].AsString;
Hoja.Cells.Item[i,9]:=DBGrid1.Fields[8].AsString;
Hoja.Cells.Item[i,10]:=DBGrid1.Fields[9].AsString;
Next;
end;//while
end;//with
|
8) ahora pedimos que el libro que ahora está listo se abra y muestre los datos que agregamos
Cita:
ExcelApplication1.Visible[1]:=true;
|
Nuestro código final nos queda asi:
Cita:
procedure TForm14.Button1Click(Sender: TObject);
var
Libro : _WORKBOOK;
Hoja : _WORKSHEET;
i:Integer;
begin
i:=2;
Libro := ExcelApplication1.Workbooks.Add(Null, 0);
Hoja := Libro.Sheets[1] as _WORKSHEET;
Hoja.Cells.Item[1,1]:='Reporte';
Hoja.Cells.Item[1,1].Font.Bold:=True;
with Query1 do
begin
first;
while not EOF Do
begin
i:=i+1;
Hoja.Cells.Item[i,1]:=DBGrid1.Fields[0].AsString;
Hoja.Cells.Item[i,2]:=DBGrid1.Fields[1].AsString;
Hoja.Cells.Item[i,3]:=DBGrid1.Fields[2].AsString;
Hoja.Cells.Item[i,4]:=DBGrid1.Fields[3].AsString;
Hoja.Cells.Item[i,5]:=DBGrid1.Fields[4].AsString;
Hoja.Cells.Item[i,6]:=DBGrid1.Fields[5].AsString;
Hoja.Cells.Item[i,7]:=DBGrid1.Fields[6].AsString;
Hoja.Cells.Item[i,8]:=DBGrid1.Fields[7].AsString;
Hoja.Cells.Item[i,9]:=DBGrid1.Fields[8].AsString;
Hoja.Cells.Item[i,10]:=DBGrid1.Fields[9].AsString;
Next;
end;//while
end;//with
ExcelApplication1.Visible[1]:=true;
end;
|
poco a poco lo van mejorando y eso
con Hoja.Cells.Item encuentran funciones de Negrita Italic y cosas aplicables a las celdas
Espero que les sirva de algo
