Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   De TQuery a Excel (https://www.clubdelphi.com/foros/showthread.php?t=61306)

lKinGl 03-11-2008 20:28:04

De TQuery a Excel
 
saludos tengo una consulta sql en la que guardo 12 columnas con n filas

¿como puedo hacer para que presionando un boton, se exporten tal cual, los datos a microsoft excel 2003?

he visto varios ejemplos por la web pero son algo enrededos y no los entiendo muy bien...

salu2 y gracias adelantadas
uso Componentes:

Delphi7
Paradox 7
BDE..TTable
TQuery
DBGrid
Datasource

ContraVeneno 03-11-2008 22:49:03

Código Delphi [-]
  Excel:=CreateOleObject('Excel.Application');
  Excel.Visible := False;
  Excel.DisplayAlerts:= False;
  Excel.WorkBooks.Add;
  Excel.WorkBooks[1].WorkSheets[1].Name := 'Libro';
  Libro := Excel.WorkBooks[1].WorkSheets['Libro'];
  Libro.Cells[1,1]:='Reporte';
  Libro.Cells[4,1].Font.Bold:=True;
  Libro.Columns.Columns[2].ColumnWidth := 50;
  with UnQuery do begin
   first;
   Libro.Cells[i,1]:=FieldByname('UnCampo').AsString;
   Libro.Cells[i,1].Font.Bold:=True;   
   while not EOF Do begin
      Libro.Cells[i,1]:=FieldByName('OtroCampo').AsString;
      .....
      Next;
   end; //while
end; //with

lKinGl 04-11-2008 04:33:09

Cita:

Empezado por ContraVeneno (Mensaje 323950)
Código Delphi [-] Excel:=CreateOleObject('Excel.Application'); Excel.Visible := False; Excel.DisplayAlerts:= False; Excel.WorkBooks.Add; Excel.WorkBooks[1].WorkSheets[1].Name := 'Libro'; Libro := Excel.WorkBooks[1].WorkSheets['Libro']; Libro.Cells[1,1]:='Reporte'; Libro.Cells[4,1].Font.Bold:=True; Libro.Columns.Columns[2].ColumnWidth := 50; with UnQuery do begin first; Libro.Cells[i,1]:=FieldByname('UnCampo').AsString; Libro.Cells[i,1].Font.Bold:=True; while not EOF Do begin Libro.Cells[i,1]:=FieldByName('OtroCampo').AsString; ..... Next; end; //while end; //with

salu2 contraveneno tarté de completar el código y me quedó así:
el código 1ero que nada lo puse dentro de un tbuton, agregue un componente texcelapplication

Código Delphi [-]
procedure TForm48.Button1Click(Sender: TObject);
var
libro: ExcelApplication;
begin
  ExcelApplication1:=CreateOleObject('Excel1.Application');
  ExcelApplication1.Visible := False;
  ExcelApplication1.DisplayAlerts:= False;
  ExcelApplication1.WorkBooks.Add;
  ExcelApplication1.WorkBooks[1].WorkSheets[1].Name := 'Libro';
  Libro:= ExcelApplication1.WorkBooks[1].WorkSheets['Libro'];
  Libro.Cells[1,1]:='Reporte';
  Libro.Cells[4,1].Font.Bold:=True;
  Libro.Columns.Columns[2].ColumnWidth := 50;
  with Query1 do begin
   first;
   Libro.Cells[i,1]:=FieldByname('numero').AsString;
   Libro.Cells[i,1].Font.Bold:=True;
   while not EOF Do begin
      Libro.Cells[i,1]:=FieldByName('cod_emp').AsString;
      //.....
      Next;
   end; //while
end; //with

y mira los errores que me da :S


Delphius 04-11-2008 05:14:11

Hola lKinGl,
Intuyo que esas series de errores se deben a dos cosas (como mínimo):
1. Tus variables excel y libro no están declaradas como variant. Declaralas como Variant.
2. Debes añadir a uses la unidad ComObj.

Tal vez este hilo te refresque algunas cosas.
Y si buscas en torry.net encontrarás componentes con lo que se te puede hacer más fácil el trabajo.

Saludos,

lKinGl 04-11-2008 05:27:37

Cita:

Empezado por Delphius (Mensaje 323998)
Hola lKinGl,
Intuyo que esas series de errores se deben a dos cosas (como mínimo):
1. Tus variables excel y libro no están declaradas como variant. Declaralas como Variant.
2. Debes añadir a uses la unidad ComObj.

Tal vez este hilo te refresque algunas cosas.
Y si buscas en torry.net encontrarás componentes con lo que se te puede hacer más fácil el trabajo.

Saludos,

gracias por tu respuesta oportuna delphius ahora el soft al menos corre pero da este error mira:




gracias adelantadas

Neftali [Germán.Estévez] 04-11-2008 10:15:55

¿Tienes Excel instalado?
Otras opciones para exportar pueden ser utilizar ADO, para guardar los datos en excel como si fuera una tabla (Busca en los foros, ya lo hemos tratado otras veces) o componentes externos que te faciliten el trabajo. Por ejemplo los de Max, que tienen la opción de exportación a Excel.

lKinGl 04-11-2008 13:46:01

sip ya instale MxExcelNative

me imagino que es ese de tantos componentes ahora como lo uso?

necesito que me enseñen a exportar ya sea de paradox a excel o que se llene mediante delphi 7 una hoja de excel.... como sea mas facil...gracias adelantadas

Neftali [Germán.Estévez] 04-11-2008 15:05:52

Cita:

Empezado por lKinGl (Mensaje 324046)
sip ya instale MxExcelNative

Yo me refería a mxExports.

Te permite exportar a excel (aparte de otros formatos) de forma sencilla.

lKinGl 04-11-2008 16:04:32

ok ya lo instale

ahora como se usa?

lKinGl 04-11-2008 16:07:02

en el boton puse esto :

mxDBGridExport1.Execute;

y en el mxDBGridExport1 asigne en la propiedad dbgrid: dbgrid1

y en exporttypes puse solo excel ok pero abre excel y todo pero da un error será que es porque tengo office 2007?

lKinGl 04-11-2008 16:10:54

ahhh y tengo tambien windows vista .... será por eso?

lKinGl 05-11-2008 02:48:08

help me please

Neftali [Germán.Estévez] 05-11-2008 10:18:36

Tal vez deberías ponerte en contacto con Max y comentarle ambas cosas, Seguro . que el tendrás claro si hay incompatibilidades con esa versión de Office o con Vista

lKinGl 05-11-2008 23:42:14

ok las cosas van avanzando ... :P
Código Delphi [-]
procedure TForm14.Button1Click(Sender: TObject);
var
  Libro : _WORKBOOK;
  Hoja  : _WORKSHEET;
  i:Integer;
begin
i:=0;
Libro := ExcelApplication1.Workbooks.Add(Null, 0);
Hoja  := Libro.Sheets[1] as _WORKSHEET;
  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
end;

logré hacer este codigo creo que esta bien, pero debe faltar algo por que no abre excel.... salu2

lKinGl 05-11-2008 23:46:15

jojojojojo lo logré revisando bien bien el codigo de contraveneno me faltaba era esto

ExcelApplication1.Visible[1]:=true;

Gracias amigos....


La franja horaria es GMT +2. Ahora son las 17:07:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi