Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Exportar a excel (https://www.clubdelphi.com/foros/showthread.php?t=32736)

raf.rsr 14-06-2006 22:46:41

Exportar a excel
 
Hola,

Llevo un buen rato buscando y después de ver varias soluciones y probar con algunos componentes, he decidido preguntar:confused:. 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....:)

Neftali [Germán.Estévez] 15-06-2006 10:55:18

¿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.

raf.rsr 15-06-2006 15:53:23

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...:confused:

Muchas Gracias por la ayuda

Neftali [Germán.Estévez] 15-06-2006 16:53:23

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é.

delphi.com.ar 15-06-2006 16:57:36

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:confused:. 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! :p

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

Saludos!

rrf 13-03-2010 19:10:55

1 Archivos Adjunto(s)
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

Neftali [Germán.Estévez] 18-03-2010 15:55:09

Excelente aporte.
¿Podrías subirlo al FTP? Así le puede servir a otras personas que busquen sobre el tema.

delphi.com.ar 18-03-2010 16:35:02

Cita:

Empezado por rrf (Mensaje 356871)
...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!

rrf 30-03-2010 15:02:28

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

delphi.com.ar 30-03-2010 15:23:11

Cita:

Empezado por rrf (Mensaje 358810)
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!

Wbarrantes 12-10-2010 19:15:36

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...

Neftali [Germán.Estévez] 13-10-2010 10:39:03

Tal vez deberías explicar mejor el error que te está dando.
¿Qué versión de Office utilizas?
¿Al generar al abrir?
....

Wbarrantes 13-10-2010 17:21:45

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....

jaimeh 19-11-2010 13:31:47

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.

yosvanyisel 19-11-2010 16:57:33

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

rrf 20-11-2010 09:00:55

1 Archivos Adjunto(s)
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.

vmorillos 14-01-2011 14:37:30

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

cmoncada 14-01-2011 17:34:42

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 (Mensaje 382853)
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.


rrf 14-01-2011 17:34:46

Cita:

Empezado por vmorillos (Mensaje 387543)
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.

sintecsl 26-01-2011 08:35:52

Ejemplo de una unidad creada para exportar
 
1 Archivos Adjunto(s)
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.

Neftali [Germán.Estévez] 26-01-2011 10:32:12

Estaría bien subirla al FTP,...
Bueno, ya la he subido yo, para cuando se necesite será más fácil enontrarla.

sintecsl 27-01-2011 07:14:14

A tú petición te pongo ejemplo de uso
 
He creado un pequeño programa de ejemplo para que veas la potencia del mismo.

Lo adjunto en el zip. También veras que está el ejecutable compilado.
Por si no te funcionase la compilación. Verás que algunas unis de utilidades no las he abierto (espero que lo comprendas).


Creo que con esto tienes material suficiente para arrancar.

Por otro lado, tienes que tener instalado Excel 97 para arriba o works.

sintecsl 27-01-2011 07:21:29

Pongo ejemplo de uso de nuevo de forma partida
 
1 Archivos Adjunto(s)
Lo intento de nuevo comprimiendolo mas (vaya chorrada con los tamaños)

1º Los compilables.

sintecsl 27-01-2011 07:28:49

El ejecutable para otro dia
 
No medeja por cuestiones de cuota. Lo entiendo, para que no llenen el server de mierda, pero me parece poco el tamaño....Ja..:D

Neftali [Germán.Estévez] 27-01-2011 10:06:00

Cita:

Empezado por sintecsl (Mensaje 389002)
No medeja por cuestiones de cuota. Lo entiendo, para que no llenen el server de mierda, pero me parece poco el tamaño....Ja..

Bueno son inconvenientes que tenemos que sufrir...
En estos casos (tamaño grande) hay otras alternativas.

La primera es subirlo al FTP del club; En la sección de ejemplos, por ejemplo (valga la redundancia).
O también (si es algo que no tiene utilidad para guardar) se puede subir a un servidor público tipo Megaupload, Rapidshare,... y colocar el link aquí.

sintecsl 27-01-2011 10:15:59

Pues tienes razón
 
Dejo en la FPT el programa de ejemplo y las unidades para compilar.

Saludos.

Neftali [Germán.Estévez] 27-01-2011 10:55:22

Cita:

Empezado por sintecsl (Mensaje 389009)
Dejo en la FPT el programa de ejemplo y las unidades para compilar.

¿FPT? ¿Tenemos FPT?
¡¡Anda!! si va a parar a nuestro FTP ;):D:D:D

¡Perfecto!
Gracias.

sintecsl 27-01-2011 11:02:37

Tiquismiquis
 
Joder que tiquismikis .......... lo importante es el contenido y no el envase... listillos.....:cool::cool::cool::cool:

rrf 27-01-2011 18:06:12

Sintecsl, muchas gracias por compartir el ejemplo. Tiene muy buena pinta, la verdad.

Probé el ejecutable que incluiste. No traté de compilarlo porque no tengo Office, ni Works.

En ese sentido quisiera comentar una diferencia importante con los ejemplos que se incluyen en los comentarios #6 y #16 de este hilo.

Esos ejemplos no necesitan tener Office instalado para funcionar, aunque no permiten controlar el formato de los fuentes en la hoja de cálculo.

El ejemplo que tú incluyes sí que permite controlar el formato de los fuentes (o al menos eso me ha parecido) y debe ejecutarse con Office o Works instalado.

Saludos.

sintecsl 28-01-2011 07:55:52

Estas en lo cierto, permite formato y mas. Tampoco lo e probado sin tener Excel.....

Te pongo una variante en las lineas de creación de Hojas (Sheets) :

Código Delphi [-]
     // agregar libro de trabajo (El número es una constante)

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

      //Creamos otra para ver la facilidad de manejo
      WorkSheet := WorkBook.WorkSheets.Add; //Creamos otra (Es lo mismo que insert hoja)
      WorkSheet := WorkBook.WorkSheets[2]; //2ª hoja
      WorkSheet.Name := 'OTRA HOJA MAS'; //Nombre de la hoja creada

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

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

Como verás puedes crear multitud de hojas con un for dandoles el nombre
que quieras. Add las va añadiendo y si no les pones nombre simplemente
las renombra en su creación el propio Excel.

Bueno suerte.

mRoman 07-04-2011 03:38:27

Duda al generar DBF
 
Cita:

Empezado por delphi.com.ar (Mensaje 142284)
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! :p

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

Saludos!

Que tal Delphi.com.ar, me puse a buscar tu nick para preguntarte algo relacionado con los archivos DBF que exporta tu componente.

Tengo un componenten TQuery en donde ejecuto el siguiente codigo sql:

Código SQL [-]
select a.lecher as clavelech,
       0 as extension,
       b.en_operacion as operacion,
       case b.ml_tventa
           when 3 then 24
           when 1 then c.dias_habiles
       end as DIASVENTA,
       coalesce(a.total_ventas,0) as venta,
       coalesce(a.total_dotacion,0) as surtimient,
       coalesce(a.total_rotos,0) as rotos,
       0 as ventalista,
       0 as ventalibre,
       coalesce(a.existencia_inicial,0) as invinicial,
       coalesce(a.existencia_final,0)   as invfinal,
       coalesce(a.venta_libro_retiro,0) as ventalibro,
       0 as contingen
from COMPORTAMIENTO_VENTA a,
     LECHERIA b,
     PRODUCTO p,
     CALENDARIO_DISTRIBUCION c
where a.mes_periodo=:mes
  and a.anio_periodo=:anio
  and a.lecher=b.lecher
  and a.cve_producto=p.cve_producto
  and p.tipo_producto=1
  and a.mes_periodo||a.anio_periodo=c.mes_periodo||c.anio_periodo
order by a.lecher

El cual le tengo relacionado a tu componente TDataToDBF y lo grabo de la siguinte manera:

dbfFile.SaveToFile(cArchivo);

Donde "cArchivo" le asigne con anterioridad la nomenclatura o nombre del archivo con el cual se grabara.

HE AQUI EL PROBLEMA:

Si lo abro en Excel no tengo problema me muestra los datos.
Si lo abro en FoxPro solo tiene 1 registro, los campos y el primer registro, cuando en Excel me presenta 300 registros.....

tu sabes por que esta pasando esto?

Te agradezco me puedas ayudar....si requieres mas información me comentas. AHHH...trabajo con FireBird 1.5.

Mechita 13-09-2011 18:56:30

Buenas, como estan todos?

Sé que el hilo se refiere a exportar a Excel, pero yo tengo un problema similar, necesito exportar a Word y el servidor donde esta la aplicación no tiene Word instalado. Sabrán de alguna manera de solucionar esto?

Aqui les dejo parte de mi código, donde creo el archivo:

Código Delphi [-]
 
WordApplication := CreateOleObject('Word.Application');
    WordDocument := WordApplication.Documents.Add;
 
    {Contenido del archivo}
 
    try
     WordDocument.Saveas(FileName := 'c:\carpeta\documento.doc', AddToRecentFiles := False);
    except
      SHOWMESSAGE('NO PUEDE GUARDAR ARCHIVO');
      SHOWMESSAGE('VERIFIQUE EXISTENCIA DE C:\carpeta');
      EXIT;
    end;
    WordApplication.Quit(true);
    abrir_word(pchar('c:\carpeta\documento.doc'));
    clearall;

Neftali [Germán.Estévez] 14-09-2011 09:33:38

Cita:

Empezado por Mechita (Mensaje 412029)
Sé que el hilo se refiere a exportar a Excel, pero yo tengo un problema similar, necesito exportar a Word y el servidor donde esta la aplicación no tiene Word instalado. Sabrán de alguna manera de solucionar esto?

Hay pocas opciones si exportas a Word y luego no tienes apicación para abrir el documentos.

(1) Tal vez puedas instalar el visualizador de Word. Es gratuíto y lo distribuye Microsoft.
(2) Otra opción es utilizar otro programa gratuíto que permita visualizarlos. El único que conozco es OpenOffice, pero eso implica también la instalación y posibles problemas de compatibilidad.

Personalmente no se me ocurre nada más...

roman 14-09-2011 15:06:10

Pero a Mechita le interesa la parte de exportar a Word, que sería independiente de qué se haga después con el archivo generado; lo mismo pues, que lo que se busca al exportar a Excel sin Excel.

Pero yo tampoco conozco algo así.

// Saludos

Ibeth 15-09-2011 18:47:35

Exportar a la hoja de Calculo Calc de libreoffice
 
Hola !!! Alguien me podria ayudar porfis, como puedo exportar datos de una aplicacion de Delphi a la hoja de Calculo Calc de Libreoffice.

Saludos :)

Neftali [Germán.Estévez] 16-09-2011 11:31:28

Cita:

Empezado por roman (Mensaje 412109)
Pero a Mechita le interesa la parte de exportar a Word, que sería independiente de qué se haga después con el archivo generado; lo mismo pues, que lo que se busca al exportar a Excel sin Excel.

Bueno, yo estaba pensando en que una vez exportado, tampoco iba poder abrirlo.

Creo que para la exportación, no hay posibilidad. Depende de cómo sea el documento, tal vez se podría hacer una exportación, pero a RTF.

Casimiro Notevi 16-09-2011 11:44:28

Cita:

Empezado por Ibeth (Mensaje 412257)
Hola !!! Alguien me podria ayudar porfis, como puedo exportar datos de una aplicacion de Delphi a la hoja de Calculo Calc de Libreoffice.
Saludos :)

Ya has abierto un hilo sobre el tema y te he contestado allí.
No preguntes cosas en cualquier hilo sin venir a cuento.
No repitas mensajes.
¿Estás segura de que has leído nuestra guía de estilo?

mancho 05-05-2012 00:15:02

Exportar un reporte de xls de wincaja sin excel
 
Hola buenas tardes mi nombre es German quizas sea demasiado tarde, saben la verdad no conozco delphi, yo busco exportar un reporte de un sistema punto de vta(wincaja), pero en lugar de office instale libreoffice3.5.
El detalle es que cuando exporto el reporte me dice que debo instalar excel para poder exportar el archivo.
Su utileria puede servirme para que el programa de wincaja detecte que excel existe y puedo expotar el file.xls a disco,no me importa si lo manda en modo txt ó cvs.

Agradezco,

Casimiro Notevi 05-05-2012 00:19:11

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.

delphi.com.ar 05-05-2012 02:10:33

Cita:

Empezado por mancho (Mensaje 431798)
Hola buenas tardes mi nombre es German quizas sea demasiado tarde, saben la verdad no conozco delphi, yo busco exportar un reporte de un sistema punto de vta(wincaja), pero en lugar de office instale libreoffice3.5.
El detalle es que cuando exporto el reporte me dice que debo instalar excel para poder exportar el archivo.
Su utileria puede servirme para que el programa de wincaja detecte que excel existe y puedo expotar el file.xls a disco,no me importa si lo manda en modo txt ó cvs.

Agradezco,

Precisamente los componentes a los que hago referencia, no necesitan nada instalado para generar los archivos. Recomiendo en tu caso generar csv para evitar problemas de compatibilidad.

Saludos!


La franja horaria es GMT +2. Ahora son las 15:30:16.

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