Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Servers
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-06-2006
raf.rsr raf.rsr is offline
Registrado
 
Registrado: ene 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....
Responder Con Cita
  #2  
Antiguo 15-06-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
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.
Responder Con Cita
  #3  
Antiguo 15-06-2006
raf.rsr raf.rsr is offline
Registrado
 
Registrado: ene 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
Responder Con Cita
  #4  
Antiguo 15-06-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
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
Cita:
Empezado por 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.
Responder Con Cita
  #5  
Antiguo 15-06-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Cita:
Empezado por 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.
Responder Con Cita
  #6  
Antiguo 13-03-2010
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
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
Archivos Adjuntos
Tipo de Archivo: zip Grabar a Excel.zip (8,0 KB, 1358 visitas)
Responder Con Cita
  #7  
Antiguo 18-03-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
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.
Responder Con Cita
  #8  
Antiguo 18-03-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Cita:
Empezado por rrf Ver Mensaje
...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.
Responder Con Cita
  #9  
Antiguo 30-03-2010
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
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
Responder Con Cita
  #10  
Antiguo 30-03-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Cita:
Empezado por rrf Ver Mensaje
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.
Responder Con Cita
  #11  
Antiguo 12-10-2010
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
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...
Responder Con Cita
  #12  
Antiguo 13-10-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
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.
Responder Con Cita
  #13  
Antiguo 13-10-2010
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
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....
Responder Con Cita
  #14  
Antiguo 19-11-2010
jaimeh jaimeh is offline
Miembro
 
Registrado: mar 2007
Posts: 68
Poder: 18
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.
Responder Con Cita
  #15  
Antiguo 19-11-2010
yosvanyisel yosvanyisel is offline
Registrado
NULL
 
Registrado: 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
Responder Con Cita
  #16  
Antiguo 20-11-2010
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
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.
Archivos Adjuntos
Tipo de Archivo: zip Grabar a Excel B.zip (11,2 KB, 707 visitas)
Responder Con Cita
  #17  
Antiguo 14-01-2011
Avatar de vmorillos
vmorillos vmorillos is offline
Miembro
NULL
 
Registrado: 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
Responder Con Cita
  #18  
Antiguo 14-01-2011
cmoncada cmoncada is offline
Registrado
NULL
 
Registrado: ene 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.


Cita:
Empezado por rrf Ver Mensaje
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.
Responder Con Cita
  #19  
Antiguo 14-01-2011
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Unhappy

Cita:
Empezado por vmorillos Ver Mensaje
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.
Responder Con Cita
  #20  
Antiguo 26-01-2011
Avatar de sintecsl
sintecsl sintecsl is offline
Miembro
 
Registrado: jun 2008
Ubicación: 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.
Archivos Adjuntos
Tipo de Archivo: zip ExportaXLS.zip (3,4 KB, 455 visitas)
__________________
www.sintecsl.es
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Exportar a Excel erasmorc OOP 4 04-08-2006 16:03:50
Exportar .gdb a Excel Novata2006 Firebird e Interbase 0 16-05-2006 11:52:08
Exportar directo a excel mikexxi2 Servers 9 12-04-2005 05:56:26
exportar a excel ? Enrique Impresión 2 01-09-2004 01:18:47
Exportar a Excel pruz Varios 8 01-07-2004 16:47:37


La franja horaria es GMT +2. Ahora son las 17:36:26.


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
Copyright 1996-2007 Club Delphi