Ir al contenido


Foto

almacenar datos en una plantilla de de excel


  • Por favor identifícate para responder
20 respuestas en este tema

#1 cl2raul66

cl2raul66

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 22 julio 2014 - 07:18

:huh:hola a todos, tengo hecho una pequeña aplicacion para facturar el problema es que no me interesa almacenar muchos datos, pero si me interesa que se almacenen en un modelo ya hecho en celdas especificas para q puedan imprimirlo cuando estimen...
  • 0

#2 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 22 julio 2014 - 07:36

Saludos.

Una manera es usar componentes de terceros:
Info1
Info2
Info3
  • 0

#3 cl2raul66

cl2raul66

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 22 julio 2014 - 08:11

gracias, por los links pero necesito algo free...
  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 22 julio 2014 - 09:03

gracias, por los links pero necesito algo free...


Puedes utilizar la unidad Excel2000 que ya viene con Delphi y puedes generar lo que quieras y como quieras en excel.

Saludos
  • 0

#5 cl2raul66

cl2raul66

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 22 julio 2014 - 09:57

yo uso delphi xe5, no se donde encontrar esa unit, si me das un norte te lo agradeceria
  • 0

#6 cl2raul66

cl2raul66

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 22 julio 2014 - 11:03

ya encontré la unit y la agregue al uses, pero como cargo el archivo y escribo en las celdas...

por favor alguien puede hacerme un ejemplo chiquito... supongamos lo siguiente:
-----------------------------------------------------------
|              Tabla de trabajadores                      |
-----------------------------------------------------------
|No.| Nombre                                      |            |
-----------------------------------------------------------
|1  |                                                    |            |
-----------------------------------------------------------
|2  |                                                    |            |
-----------------------------------------------------------
|3  |                                                  |            |
-----------------------------------------------------------
|Total                                                  |            |
-----------------------------------------------------------
esta tabla ya esta echa en excel y quiero llenarla desde delphi y guardarla en un lugar predeterminado....                                                 
  • 0

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 22 julio 2014 - 11:08

yo uso delphi xe5, no se donde encontrar esa unit, si me das un norte te lo agradeceria


Las unidades excel son dos excel2000 o excel2010. Puedes utilizar cualquiera de éstos dos depende de la versión de excel que tengas instalado.



delphi
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Vcl.Forms,
  7.   excel2000, excel2010; //Puedes utilizar cualquiera de éstos dos depende de la versión de excel que tengas instalado.
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.   private
  12.     { Private declarations }
  13.   public
  14.     { Public declarations }
  15.   end;
  16.  
  17. var
  18.   Form1: TForm1;
  19.  
  20.   //Con éstas variables puedes generar lo que quieras, sólo hay que darle una "estudiadita" y listo.
  21.   XLApp: TExcelApplication;
  22.   XLWSheet: _WorkSheet;
  23.   XLRange: ExcelRange;
  24.  
  25. implementation
  26.  
  27. {$R *.dfm}
  28.  
  29. end.



Saludos
  • 0

#8 cl2raul66

cl2raul66

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 22 julio 2014 - 11:17

egostar muchisimas gracias, ya q eres el unico q parece estar conectado...
si no te es mucha molestia creas un formulario con unos edit para cada campo y cuando presiones un boton inserte los datos y otro para borrarlos, toma como ejemplo la tabla de trabajadores q publique...

disculpa la osadia, pero el estudio lo dejo para lueguito, lo dejo para perfeccionar esto...
  • 0

#9 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 22 julio 2014 - 12:02

egostar muchisimas gracias, ya q eres el unico q parece estar conectado...


Somos varios los conectados amigo, solo que no todos dominamos el tema.... Saludos.  :D
  • 0

#10 cl2raul66

cl2raul66

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 22 julio 2014 - 12:04

lo se me refiero a conectado en el sentido del tema q publique.... (y)
  • 0

#11 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 22 julio 2014 - 03:58

Yo puedo darte otro empujoncito, pero al final, tendrás que adaptarlo...

En mi caso, abro un archivo de excel, que para el ejemplo se llama "ArchivoExcel.xls", modifico las celdas que requiero, guardo y cierro el archivo. Espero te sea de ayuda (y).



delphi
  1.     var
  2.       Excel: TExcelApplication;
  3.       Hoja: _WorkSheet;
  4.     begin
  5.       Reporte := Proyecto.RutaExe + 'ArchivoExcel.xls';
  6.       Ruta := ExtractFilePath(Reporte);
  7.       Archivo := ExtractFileName(Reporte);
  8.  
  9.       Excel := TExcelApplication.Create(nil);
  10.  
  11.       Excel.ConnectKind:= ckNewInstance;
  12.  
  13.       Excel.DisplayAlerts[LOCALE_USER_DEFAULT] := False;
  14.       Excel.Workbooks.Open( Reporte,
  15.                             EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
  16.                             EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
  17.                             EmptyParam, EmptyParam, 0 );
  18.  
  19.       Excel.Visible[LOCALE_USER_DEFAULT] := False;
  20.  
  21.       Hoja := Excel.Worksheets.Item[1] as _WorkSheet;
  22.       Hoja.Range[Hoja.Cells.Item[1, 2], Hoja.Cells.Item[1, 2]].Value := sValor;
  23.       Hoja.Range[Hoja.Cells.Item[1, 3], Hoja.Cells.Item[1, 3]].Value := sReco;
  24.       Hoja.Range[Hoja.Cells.Item[1, 4], Hoja.Cells.Item[1, 4]].Value := sCuenta;
  25.  
  26.       Hoja.SaveAs(Ruta+Archivo,xlExcel97_2003,EmptyParam,EmptyParam,false,false, EmptyParam,EmptyParam,EmptyParam,LOCALE_USER_DEFAULT);
  27.       Excel.Workbooks.Close(LOCALE_USER_DEFAULT);
  28.       Excel.Quit;
  29.       Excel.DisplayAlerts[LOCALE_USER_DEFAULT] := True;
  30.       Excel.Disconnect;



Saludox ! :)
  • 0

#12 cl2raul66

cl2raul66

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 24 julio 2014 - 12:41

gracias Fenareth, pero me da error en Excel.ConnectKind:= ckNewInstance;...
yo uso delphio xe5 y la opcion q me da como corecto es Excel.ConnectKind.ckNewInstance; pero cuando compilo me da error...

supongo que las valiables Reporte,  Ruta,  Archivo son string (y)
  • 0

#13 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 24 julio 2014 - 12:52

gracias Fenareth, pero me da error en Excel.ConnectKind:= ckNewInstance;...
yo uso delphio xe5 y la opcion q me da como corecto es Excel.ConnectKind.ckNewInstance; pero cuando compilo me da error...

supongo que las valiables Reporte,  Ruta,  Archivo son string (y)


El ejemplo está hecho en Delphi 2007, supongo que algo debe cambiar entre ésta versión y la XE5, por eso mencionaba que de todos modos debías adaptarlo.

¿ Ya buscaste el error que te arroja en google ?

Saludox ! :)
  • 0

#14 cl2raul66

cl2raul66

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 24 julio 2014 - 01:06

imagino q agreges en el uses Excelxp, Excel2010, ComObj
  • 0

#15 cl2raul66

cl2raul66

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 24 julio 2014 - 01:27

si, tu tenes el codigo bien solo tenia q agregar el componente y funciono Excel.ConnectKind:= ckNewInstance;
ahora da problema en:


delphi
  1. Excel.Workbooks.Open(Reporte,
  2.                       EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
  3.                       EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
  4.                       EmptyParam, EmptyParam, 0);


con un error de no encuentra el parametro actual
  • 0

#16 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 24 julio 2014 - 02:24

Revisa los parámetros que te solicita Excel.Workbooks.Open.

Saludox ! :)
  • 0

#17 cl2raul66

cl2raul66

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 24 julio 2014 - 02:43

si ya lo revise y resolví ese problema, faltaban 2 EmptyParam, aqui es donde surge el otro:


delphi
  1. Hoja.Range[Hoja.Cells.Item[1,2], Hoja.Cells.Item[1, 2]].Value := sValor;
  2.   Hoja.Range[Hoja.Cells.Item[1,3], Hoja.Cells.Item[1, 3]].Value := sReco;
  3.   Hoja.Range[Hoja.Cells.Item[1,4], Hoja.Cells.Item[1, 4]].Value := sCuenta;


  • 0

#18 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 24 julio 2014 - 02:45

Creo que de repente olvidas que no estamos ni al lado tuyo ni viendo tu computadora... ¿cuál otro?  *-)

Saludox ! :)
  • 0

#19 cl2raul66

cl2raul66

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 24 julio 2014 - 03:01

jajaja si estaba en eso, es q me saca de quisio el cacha ese....

esto no compila:
Hoja.Range[Hoja.Cells.Item[1,2], Hoja.Cells.Item[1, 2]].Value := sValor;
  Hoja.Range[Hoja.Cells.Item[1,3], Hoja.Cells.Item[1, 3]].Value := sReco;
  Hoja.Range[Hoja.Cells.Item[1,4], Hoja.Cells.Item[1, 4]].Value := sCuenta;

esto si:
  Hoja.Range[Hoja.Cells.Item[1,2], Hoja.Cells.Item[1, 2]];

para que son sValor, sReco y sCuenta.... son variables???
  • 0

#20 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 24 julio 2014 - 03:08

jajaja si estaba en eso, es q me saca de quisio el cacha ese....

esto no compila:
Hoja.Range[Hoja.Cells.Item[1,2], Hoja.Cells.Item[1, 2]].Value := sValor;
  Hoja.Range[Hoja.Cells.Item[1,3], Hoja.Cells.Item[1, 3]].Value := sReco;
  Hoja.Range[Hoja.Cells.Item[1,4], Hoja.Cells.Item[1, 4]].Value := sCuenta;

esto si:
  Hoja.Range[Hoja.Cells.Item[1,2], Hoja.Cells.Item[1, 2]];

para que son sValor, sReco y sCuenta.... son variables???

Se entiende del ejemplo de Fenareth que lo que hace es poner en las celdas (1,2), (1,3) y (1,4) los valores de las variables sValor, sReco y sCuenta respectivamente.
Aquí es donde va a variar en tu caso y deberás indicar de donde extraer los datos y en que celdas van. Eso ya depende de una plantilla.

Si dices que no te compila, ¿Que observar si colocas el punto después de cerrar el corchete? Te da alguna sugerencia el editor?
En la versión que utiliza Fenareth existe la propiedad .Value, ¿No aparece en tu caso? Quizá algunos de los cambios de 2007 a 2010 es que ahora ya los datos no se hacen via .Range[].Value sino de otra forma. Por ello te pido que copiar por copiar no lo hagas y vayas observando al poner el punto, que opciones te muestra el editor.

Saludos,
  • 0




IP.Board spam blocked by CleanTalk.