Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Servers
Register FAQ Members List Calendar Guía de estilo Today's Posts

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 14/06/2006
raf.rsr raf.rsr is offline
Registrado
 
Join Date: Jan 2006
Posts: 9
Poder: 0
raf.rsr Va por buen camino
Question Exportar a excel

Hola,

Llevo un buen rato buscando y después de ver varias soluciones y probar con algunos componentes, he decidido preguntar. Quiero saber como se puede exportar a un archivo excel (sin necesidad de tener el excel en la pc) . Lo que quiero es exportar unos datos que estan en una base de datos para un archivo excel, pero esto no es lo más complicado, ya que lo logre hacer con un componente (Firesoft), pero que este archivo tiene que tener un formato especificio, con un encabezado de varias lienas(Bastante grandecito) y colores....algo que este componente no me permite

Muchas gracias por su atención....
Reply With Quote
  #2  
Old 15/06/2006
Neftali [Germán.Estévez]'s Avatar
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Join Date: Jul 2004
Location: Barcelona - España
Posts: 19,449
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Te sirve exportar a archivo separado por comas (CSV)? Si le colocas extensión CSV se abre con Excel sin problemas.

Haz la prueba:
Escribe en un archivo de texto lo siguiente:

1;2;3;4;5;6
Marcos;David;Emilio;Julián;Judit;Claudia


Grábalo con extensión .CSV y podrás abrilo desde excel sin problemas.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Reply With Quote
  #3  
Old 15/06/2006
raf.rsr raf.rsr is offline
Registrado
 
Join Date: Jan 2006
Posts: 9
Poder: 0
raf.rsr Va por buen camino
Unhappy

Neftali ya lo intente de esa forma, de hecho creo que es practicamente eso lo que hace el componente (Firesoft). Pero no me sirve ya que los datos que tengo que llenar tienen que tener cierto formato, y la exportacion a archivos CSV no le dan formato. Para explicarme mejor, el archivo excel resultado tiene que tener un encabezado con varias lineas de texto centradas con colores etc, luego vienen todos los datos de la base de datos, y los encabezados de columnas tambien tienen que tener formato...

Muchas Gracias por la ayuda
Reply With Quote
  #4  
Old 15/06/2006
Neftali [Germán.Estévez]'s Avatar
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Join Date: Jul 2004
Location: Barcelona - España
Posts: 19,449
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Quote:
Originally Posted by raf.rsr
...ya que los datos que tengo que llenar tienen que tener cierto formato
En ese caso, como bien dices no sirve.
He leído (seguro) sobre unos componentes para exportar a Excel, que no necesitan Excel; El problema es que no los recuerdo, pero si los buscas al final seguro que los encuentras. Lo que no se si permitirán realizar lo que necesitas.
Si recuerdo el nombre te lo escribiré.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Reply With Quote
  #5  
Old 15/06/2006
delphi.com.ar's Avatar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Join Date: May 2003
Location: Buenos Aires, Argentina *
Posts: 5,964
Poder: 29
delphi.com.ar Va camino a la fama
Quote:
Originally Posted by raf.rsr
Llevo un buen rato buscando y después de ver varias soluciones y probar con algunos componentes, he decidido preguntar. Quiero saber como se puede exportar a un archivo excel (sin necesidad de tener el excel en la pc) . Lo que quiero es exportar unos datos que estan en una base de datos para un archivo excel, pero esto no es lo más complicado, ya que lo logre hacer con un componente (Firesoft), pero que este archivo tiene que tener un formato especificio, con un encabezado de varias lienas(Bastante grandecito) y colores....algo que este componente no me permite
Hola raf.rsr, te comento que el componente al que haces referencia es de mi autoría, y hace poco abrí los fuentes (expsuitsrc.zip). Puedes ver el código y verás que internamente la clase TDataToXLS utiliza otra clase llamada TBiffFile, precisamente esta clase esta separada para poder crear un archivo Excel sin el formato que impone TDataToXLS, puedes crear algo totalmente personalizado, con los formatos de un BIFF5 (Como en las versiones viejas de Excel).
Podrás ver que el diseño de la clase es algo arcaico, ya que esta programada para compilar en todas las versiones de Delphi, se aceptan sugerencias!

PD: Excepto lo de agregar filas antes de los datos, el resto puedes cambiar el formato con el TDataToXLS

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Reply With Quote
  #6  
Old 13/03/2010
rrf rrf is offline
Miembro
 
Join Date: Aug 2003
Location: S/C Tenerife, España
Posts: 454
Poder: 24
rrf Va por buen camino
Wink

Hola.

Reabro este hilo porque he encontrado una información de lo más interesante en los recursos que hay disponibles de Borland/Embarcadero: Creating excel file without OLE. Y me gustaría compartir esa información por si le resulta útil a alguien.

Son unos pocos procedimientos que permiten crear directamente hojas de cálculo Excel.

Parece tan poco (el código) que pensé que no funcionaría, pero lo hace bien.

Lo he adaptado un poco y lo adjunto con un ejemplo, como fichero para descargar.

Bueno, quizás el formato de la hoja de cálculo que se crea sea antíguo (el artículo tiene fecha de 1999), pero parece funcionar bien. Lo he probado con OpenOffice Calc y no daba problemas.

Una ventaja que me parece muy interesante es que no hay que añadir ningún componente. Lo hace todo por código.

El ejemplo está hecho en Delphi 7.

SAlu2 a to2.

Ramón
Attached Files
File Type: zip Grabar a Excel.zip (8.0 KB, 1370 views)
Reply With Quote
  #7  
Old 18/03/2010
Neftali [Germán.Estévez]'s Avatar
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Join Date: Jul 2004
Location: Barcelona - España
Posts: 19,449
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Excelente aporte.
¿Podrías subirlo al FTP? Así le puede servir a otras personas que busquen sobre el tema.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Reply With Quote
  #8  
Old 18/03/2010
delphi.com.ar's Avatar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Join Date: May 2003
Location: Buenos Aires, Argentina *
Posts: 5,964
Poder: 29
delphi.com.ar Va camino a la fama
Quote:
Originally Posted by rrf View Post
...Son unos pocos procedimientos que permiten crear directamente hojas de cálculo Excel....
Vi el código, y sigo recomendando utilizar la clase TBiffFile de la unit BiffFile de mis componentes. Básicamente es lo mismo, mucho mas extenso y prolijo, y embebido en una clase!

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Reply With Quote
  #9  
Old 30/03/2010
rrf rrf is offline
Miembro
 
Join Date: Aug 2003
Location: S/C Tenerife, España
Posts: 454
Poder: 24
rrf Va por buen camino
Hola de nuevo.
Lamento haber tardado tanto en contestar, pero mi correo electrónico consideró el mensaje de aviso de que el tema había sido contestado como espam y lo acabo de descubrir y leer ahora mismo.
Neftali, gracias por tu comentario. Acabo de intentar acceder a FTP (en la parte alta de la página), pero me da error y no he podido.
Delphi.com.ar, la ventaja que tiene este código para mí es que no requiere instalar componentes pues, en la medida de lo posible, procuro evitar el utilizar componentes nuevos.
Saludos.
Ramón
Reply With Quote
  #10  
Old 30/03/2010
delphi.com.ar's Avatar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Join Date: May 2003
Location: Buenos Aires, Argentina *
Posts: 5,964
Poder: 29
delphi.com.ar Va camino a la fama
Quote:
Originally Posted by rrf View Post
Delphi.com.ar, la ventaja que tiene este código para mí es que no requiere instalar componentes pues, en la medida de lo posible, procuro evitar el utilizar componentes nuevos.
Los componentes no dejan de ser código, utilizar un fragmento de código bajado de la Web es lo mismo que utilizar un componente, con la salvedad que el componente lo tienes que instalar. Para usar la clase que te digo no es necesario instalar ningún componente, simplemente usar la unit BiffFile que tiene la clase TBiffFile al igual que utilizas la unit con ese código.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Reply With Quote
  #11  
Old 12/10/2010
Wbarrantes's Avatar
Wbarrantes Wbarrantes is offline
Miembro
 
Join Date: Aug 2010
Posts: 119
Poder: 16
Wbarrantes Va por buen camino
problema en el ejemplo

cuando intento exportar en el ejemplo a excel... apareceun error,pues para un texto tan simple con wes, me pone caracteres extra;os entre las letras
w#e#s algo asi...
Reply With Quote
  #12  
Old 13/10/2010
Neftali [Germán.Estévez]'s Avatar
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Join Date: Jul 2004
Location: Barcelona - España
Posts: 19,449
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Tal vez deberías explicar mejor el error que te está dando.
¿Qué versión de Office utilizas?
¿Al generar al abrir?
....
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Reply With Quote
  #13  
Old 13/10/2010
Wbarrantes's Avatar
Wbarrantes Wbarrantes is offline
Miembro
 
Join Date: Aug 2010
Posts: 119
Poder: 16
Wbarrantes Va por buen camino
ok,... No genera un error de codigo, si no un error en el formato del archivo exportado... en cada celda de la hoja de excel que se escribio... el ejemplo original, se escribe en cada celda la palabra "CELL:" pero al abrir con Excell se ve C[?]E[?]L[?]L[?]:

[?]= [un simbolo de pregunta dentro de una cajita cerrada]

utilizo Office 2007... pero se supone que puede leer archivos de versiones anteriores....

Gracias portu ayuda,ne el foro de embarcadero algo estuve viendo al respecto de este mismo problema, pero no puedo abrir la pagina del foro... jejeje al unico foro que tengo derechos de ingreso es al del CLUBDELPHI, depues de una buena rogada que me pegue en el trabajo,pues para mi este foro es una herramienta muy importante....
Reply With Quote
  #14  
Old 19/11/2010
jaimeh jaimeh is offline
Miembro
 
Join Date: Mar 2007
Posts: 68
Poder: 20
jaimeh Va por buen camino
Mirando los componentes de delphi.com.ar y la unidad BiffFile, no veo que
se pueda poner color a las celdas. Me imagino que los Biff no lo permitiran.
Reply With Quote
  #15  
Old 19/11/2010
yosvanyisel yosvanyisel is offline
Registrado
NULL
 
Join Date: Nov 2010
Posts: 1
Poder: 0
yosvanyisel Va por buen camino
Thumbs up Excelente Ejemplo Tienes 100000000 Puntos

" RRF " EXCELNTE FELICIDADES

Para mucho nos habria sido interesanta que explicaras en detalle con comentarios que hacen los procedimientos, pero de igual modo me ha servido muchisimo.

Hay muchisima gente buscando eso graciasss saludos
Reply With Quote
  #16  
Old 20/11/2010
rrf rrf is offline
Miembro
 
Join Date: Aug 2003
Location: S/C Tenerife, España
Posts: 454
Poder: 24
rrf Va por buen camino
Wink

Hola Yosvanyisel.

Como te ha servido y además te ha gustado, pues voy a añadir otra versión que hice en su tiempo y que no me animé a incluirla en el foro por temor a agotar la capacidad de subir archivos al foro que tengo.

Es ligeramente mejor que el anterior porque añade la opción de crear un "informe" más realista y la de cargar automáticamente la hoja de cálculo con el programa que para ello esté configurado en Windows.

Lo hice con la idea de que fuera más claro el código para personas que se inciaban en Delphi y de probarlo para usarlo a nivel personal.

Espero que te sirva a tí y a quien lo necesite.

Saludos.
Attached Files
File Type: zip Grabar a Excel B.zip (11.2 KB, 712 views)
Reply With Quote
  #17  
Old 14/01/2011
vmorillos's Avatar
vmorillos vmorillos is offline
Miembro
NULL
 
Join Date: Nov 2010
Posts: 17
Poder: 0
vmorillos Va por buen camino
A 2007

Hola RRF, habrá forma de modificar el programa para que migra datos a excel 2007 para de esta forma soportar mas de 65536 filas.
Creo que la cosa va por las variables "CXls".

Gracias.
Saludos a todos.

dibe
__________________
dibe
Reply With Quote
  #18  
Old 14/01/2011
cmoncada cmoncada is offline
Registrado
NULL
 
Join Date: Jan 2011
Posts: 1
Poder: 0
cmoncada Va por buen camino
Gracias

Muchas Gracias rrf, estaba buscando como realizar esta parte, y esta muy claro y como funciona la exportacion a excel.

Gracias buen aporte.


Quote:
Originally Posted by rrf View Post
Hola Yosvanyisel.

Como te ha servido y además te ha gustado, pues voy a añadir otra versión que hice en su tiempo y que no me animé a incluirla en el foro por temor a agotar la capacidad de subir archivos al foro que tengo.

Es ligeramente mejor que el anterior porque añade la opción de crear un "informe" más realista y la de cargar automáticamente la hoja de cálculo con el programa que para ello esté configurado en Windows.

Lo hice con la idea de que fuera más claro el código para personas que se inciaban en Delphi y de probarlo para usarlo a nivel personal.

Espero que te sirva a tí y a quien lo necesite.

Saludos.
Reply With Quote
  #19  
Old 14/01/2011
rrf rrf is offline
Miembro
 
Join Date: Aug 2003
Location: S/C Tenerife, España
Posts: 454
Poder: 24
rrf Va por buen camino
Unhappy

Quote:
Originally Posted by vmorillos View Post
Hola RRF, habrá forma de modificar el programa para que migra datos a excel 2007 para de esta forma soportar mas de 65536 filas.
Creo que la cosa va por las variables "CXls".
Vmorillos, lo siento, no te puedo ayudar.

El código que hace el proceso no es mío y no comprendo como funciona.

Mi aportación en el archivo de descarga fue el incluir ese código en una sencilla aplicación que facilitara el probarlo. Como funciona, lo desconozco...

Recibe un saludo.
Reply With Quote
  #20  
Old 26/01/2011
sintecsl's Avatar
sintecsl sintecsl is offline
Miembro
 
Join Date: Jun 2008
Location: Barcelona - Spain
Posts: 40
Poder: 0
sintecsl Va por buen camino
Ejemplo de una unidad creada para exportar

Esta unidad forma parte de un programa mucho mas extenso. Es por ello que algunos objetos no los tendras, pero lo puedes adaptar a lo que quieras y te dá las claves para realizar dicha exportación.

Código Delphi [-]

unit ExportaXLS;

interface

Uses Grids;

// Added by MANEL 31/10/2010 7:22:54
//Procedimiento que exporta la Tabla a XLS
procedure ExportarXLS(const Tabla : TStringGrid; const Fichero : String);

implementation

uses ComObj, Graphics, CARATULAS, { ShellApi,} Dlg_MensajeTransaccion,
     Configuracion, SysUtils, StrUtils, UtilidadSTR, UtilidadFiles;

procedure ExportarXLS(const Tabla : TStringGrid; const Fichero : String);
label Comienza;
const //Constantes cogidas del fichero ExcelXP.pas
  xlCenter = $FFFFEFF4;
  xlJustify = $FFFFEFDE;
  xlBottom = $FFFFEFF5;
  xlLeft = $FFFFEFDD;
  xlRight = $FFFFEFC8;
  xlTop = $FFFFEFC0;
var
  Excel, WorkBook, WorkSheet, Range : Variant;
  RangoIni, RangoFin : string;
  F, C : Integer; //Fila y columna de la Hoja XLS
  Row : Integer; //Fila de la Tabla
  ConPrecios : Boolean; //Determina si se imprimen los precios
procedure FuenteParaLaHoja(const NomFuente : string; TamFuente : Integer);
begin
     //Le daremos formato a toda la tabla
     RangoIni:='A1';
     RangoFin:='E'+IntToStr(Tabla.RowCount+6);
     Range:=WorkSheet.Range[RangoIni,RangoFin];
     Range.Font.Name:=NomFuente;
     Range.Font.Size:=TamFuente;
end;
procedure PonCabecera;
var
  c : Integer;
begin
     //Lo hacemos por rango
     RangoIni:='A'+IntToStr(F);
     RangoFin:='E'+IntToStr(F);
     Range:=WorkSheet.Range[RangoIni,RangoFin];
     Range.Font.Size:=12; //Tamaño fuente
     Range.Font.Bold:=True; //En negrita
     Range.Font.Underline:=True; //Subrayado
     Range.Interior.Color:=clSilver; //Fondo
     Range.VerticalAlignment:=xlTop;
     Range.HorizontalAlignment:=xlCenter;
     //Ponemos valores
     for C:=1 to Tabla.ColCount do
       WorkSheet.Cells[F, C]:=Tabla.Cells[C-1,0];
end;
{procedure FormatoCant;
begin
     WorkSheet.Cells[F, C]:=Tabla.Cells[C-1,Row];
     WorkSheet.Cells[F, C].NumberFormat:='###.###';
     WorkSheet.Cells[F, C].Font.Name:='Arial'; //Tipo fuente
     WorkSheet.Cells[F, C].Font.Size:=10; //Tamaño fuente
     WorkSheet.Cells[F, C].VerticalAlignment:=xlTop;
     WorkSheet.Cells[F, C].HorizontalAlignment:=xlCenter;
end;
procedure FormatoUD;
var
  Celda : string;                           
begin
     Celda:=Tabla.Cells[C-2,Row];
     if (Pos('*',Celda)>0)Or(Pos('@',Celda)>0) then Exit; //Clave de formato
     WorkSheet.Cells[F, C]:=Tabla.Cells[C-1,Row];
     WorkSheet.Cells[F, C].Font.Name:='Arial'; //Tipo fuente
     WorkSheet.Cells[F, C].Font.Size:=10; //Tamaño fuente
     WorkSheet.Cells[F, C].VerticalAlignment:=xlTop;
     WorkSheet.Cells[F, C].HorizontalAlignment:=xlCenter;
end; }
procedure FormatoConcepto;
var
  Celda : string;
begin
     //Esta parte es común para todos
     WorkSheet.Cells[F, C]:=Tabla.Cells[C-1,Row];
     Celda:=Tabla.Cells[C-2,Row];
     if (Pos('*',Celda)>0)Or(Pos('@',Celda)>0) then
       Begin //Formato especial
            WorkSheet.Cells[F, C].Font.Bold:=True; //En negrita
            if Pos('@',Celda)>0 then //Nota
               WorkSheet.Cells[F, C].Font.Color:=clGreen//clRed //Color fuente
            else WorkSheet.Cells[F, C].Font.Color:=clBlue; //Color fuente
            if Pos('**',Celda)>0 then //Subtotales, totales parciales y totales
               begin
                    WorkSheet.Cells[F, C].VerticalAlignment := xlBottom;
                    WorkSheet.Cells[F, C].HorizontalAlignment:=xlRight;
               end
       end;
end;
procedure FormatoTotal;
var
  Celda : string;
begin
     //Miramos que se imprime
     Celda:=Tabla.Cells[C-4,Row];
     if Pos('*',Celda)>0 then //Significa que hay algún tipo de total o resumen
        WorkSheet.Cells[F, C].Font.Bold:=True; //En negrita
     if (Config.Impresora.Total)and(Pos('***',Celda)>0) then  //Totales
        WorkSheet.Cells[F, C]:=Tabla.Cells[C-1,Row]
     Else
     if (Config.Impresora.SubTotales)and(Celda='**') then //SubTotales
        WorkSheet.Cells[F, C]:=Tabla.Cells[C-1,Row]
     else
     if (Celda='*')and(Config.Impresora.Total) then //Son del resumen
        WorkSheet.Cells[F, C]:=Tabla.Cells[C-1,Row]
     else
     if Config.Impresora.Totales then //Parciales
        WorkSheet.Cells[F, C]:=Tabla.Cells[C-1,Row];
end;
var
  Dir, FileTemp : string;
begin
      // Added by MANEL 30/10/2010 7:45:11
      //Importante podriamos poner la mayoría de las celdas de totales con fórmulas
      //con la siguiente instrucción Range.formula:='+A1*C1' o celda a celda con
      //WorkSheet.Cells[F, 4].formula:='+A1*C1'; por ejemplo

      ConPrecios:=ConfirmaPregunta('¿ PONER PRECIOS A LA HOJA DE CÁLCULO?' )=0;
    try
      // crear instancia de la aplicación Excel (requieres la unidad ComObj)

      Excel := CreateOleObject('Excel.Application');

      // evitar que nos pregunte si deseamos sobreescribir el archivo

   //   Excel.DisplayAlerts := false;  ****LA ELIMINAMOS PARA QUE LOS ERRORES SEAN VISIBLES

      // agregar libro de trabajo (El número es una constante)

      Workbook := Excel.Workbooks.Add(-4167);

      // tomar una referencia a la hoja creada y darle nombre

      WorkSheet := WorkBook.WorkSheets[1]; //1ª hoja
      WorkSheet.Name := 'PRESUPUESTO'; //Nombre de la hoja creada

      FuenteParaLaHoja('Arial',10); //Damos formato a toda la hoja

      //Llenamos las Celdas
      //(Toma en cuenta que las columnas y filas empiezan en 1, y que en el
      // WorkSheet.Cells[F,C]. F es la Fila y C es la Columna.)
      F:=2; //Apuntamos a la primera fila
      //Damos formato de ancho a las columnas
      WorkSheet.Cells[F, 1].ColumnWidth:=9;  //Cant
      WorkSheet.Cells[F, 2].ColumnWidth:=7;  //Ud
      WorkSheet.Cells[F, 3].ColumnWidth:=90; //Descripción
      WorkSheet.Cells[F, 4].ColumnWidth:=14; //Pu
      WorkSheet.Cells[F, 5].ColumnWidth:=16; //Totales

      //Rellenamos datos del presupuesto
      C:=3; //Columna donde introduciremos
      WorkSheet.Cells[F, C]:='PRESUPUESTO Nº : '+Caratula.LabeledEdit1.Text;
      //Damos formato
      WorkSheet.Cells[F, C].Font.Size:=14; //Tamaño fuente
      WorkSheet.Cells[F, C].Font.Bold:=True; //En negrita
      WorkSheet.Cells[F, C].Font.Color:=clRed; //Color fuente
      WorkSheet.Cells[F, C].Font.Underline:=True; //Subrayado
      Inc(F,2);
      WorkSheet.Cells[F, C]:='Ref. : '+Caratula.LabeledEdit2.Text;
      //Damos formato
      WorkSheet.Cells[F, C].Font.Size:=12; //Tamaño fuente
      WorkSheet.Cells[F, C].Font.Color:=clBlue; //Color fuente
      WorkSheet.Cells[F, C].VerticalAlignment:=xlTop; //Justificacion Vertical
      WorkSheet.Cells[F, C].HorizontalAlignment:=xlJustify; //Justificación Horizontal

      // Tomando desde el StringGrid "Tabla" pasado por valor a este objeto
      //Creamos cabecera *************************************
      Inc(F,2);
      C:=1;
      PonCabecera;
      //Fin cabecera ******************************************

      //Daremos formato por rango de las columnas. Es obvio que en los totales.
      //apartados, anotaciones etc, tendrán un formato concreto distinto
      Inc(F);
      //Congelamos el panel visual de cabecera
      WorkSheet.Cells[F,1].Select; //Posicionamos cursor en la primera
    //  WorkSheet.Rows[F].Select; //Selecciona toda una fila
      Excel.ActiveWindow.FreezePanes := True;
    //  WorkSheet.Cells.Select; //Selección de toda la hoja
      //Columna Cant
      RangoIni:='A'+IntToStr(F);
      RangoFin:='A'+IntToStr(F+Tabla.RowCount);
      Range:=WorkSheet.Range[RangoIni,RangoFin];
      Range.VerticalAlignment:=xlTop;
      Range.HorizontalAlignment:=xlCenter;
      Range.NumberFormat:='###.###,##';

      //Columna Ud
      RangoIni:='B'+IntToStr(F);
      RangoFin:='B'+IntToStr(F+Tabla.RowCount);
      Range:=WorkSheet.Range[RangoIni,RangoFin];
      Range.VerticalAlignment:=xlTop;
      Range.HorizontalAlignment:=xlCenter;

      //Columna Concepto
      RangoIni:='C'+IntToStr(F);
      RangoFin:='C'+IntToStr(F+Tabla.RowCount);
      Range:=WorkSheet.Range[RangoIni,RangoFin];
      Range.VerticalAlignment:=xlTop;
      Range.HorizontalAlignment:=xlLeft;
      Range.WrapText:=True; //Indica adaptación de línea al contenido

      //Columna Pu y Total
      RangoIni:='D'+IntToStr(F);
      RangoFin:='E'+IntToStr(F+Tabla.RowCount);
      Range:=WorkSheet.Range[RangoIni,RangoFin];
      Range.VerticalAlignment:=xlBottom;
      Range.HorizontalAlignment:=xlRight;
      Range.WrapText:=True; //Indica adaptación de línea al contenido
      Range.NumberFormat:='###.###,## €';

      //Con los anteriores formatos esta definido lo que es por defecto.
      //Ahora hay que determinar las filas que son especiales

      //Colocamos datos de la tabla
      DlgTransaccion.Barra.ValorMax:=Tabla.RowCount;
      DlgTransaccion.Show;
      for Row:=1 To Tabla.RowCount-1 do
        begin
             DlgTransaccion.Barra.Progress:=Row;
             C:=1; //Columna "Cant"
             WorkSheet.Cells[F, C]:=AnsiReplaceStr(Tabla.Cells[C-1,Row],'.','');
             C:=2; //Columna "Ud"
             WorkSheet.Cells[F, C]:= Tabla.Cells[C-1,Row];
             C:=3; //Columna "Concepto"
             FormatoConcepto; //En esta hay distintas alineaciones y formatos
             // A partir de aquí mirar si los precios son "visibles"
             if ConPrecios then //Ponemos las columnas de precios
               begin
                    C:=4; //Columna "PU"
                    if Config.Impresora.Pu then
                       WorkSheet.Cells[F, C]:=Tabla.Cells[C-1,Row];
                    C:=5; //Columna "Total"
                    FormatoTotal;
               end;
             Inc(F);
        end;
      // guardamos en archivo XLS la hoja generada
      DlgTransaccion.Close; //Cerramos dialogo transacción
      try //Esta parte es la mas delicada
        //Crearemos un temporal que eliminaremos
        Dir:=ExtractFilePath(Fichero);
        FileTemp:=DameFicheroTemp(Dir,'EXPORTACION PRESUPUESTO','.XLS');
        WorkBook.SaveAs(FileTemp);
        Excel.Quit;
        if not CopiaFichero(FileTemp,Fichero) then
           MensageError('No se pudo copiar el fichero :'#13+Fichero);
        BorraFichero(FileTemp); //Borramos el temporal
      except //Capturamos fallos principales de guardado o de apertura simultanea
            //Desconectamos
            Excel.Quit;
            DlgTransaccion.Close;
            Exit;
      end;
    finally // Si se produce algún error desconectar el objeto
         DlgTransaccion.Close;
         Excel.Quit;
    end
end;

end.

Espero que sea de ayuda.

Adjunto fichero.
Attached Files
File Type: zip ExportaXLS.zip (3.4 KB, 459 views)
__________________
www.sintecsl.es
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Exportar a Excel erasmorc OOP 4 04/08/2006 15:03
Exportar .gdb a Excel Novata2006 Firebird e Interbase 0 16/05/2006 10:52
Exportar directo a excel mikexxi2 Servers 9 12/04/2005 04:56
exportar a excel ? Enrique Impresión 2 01/09/2004 00:18
Exportar a Excel pruz Varios 8 01/07/2004 15:47


All times are GMT +2. The time now is 01:52.


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