Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Providers
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-07-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No tengo Delphi a mano y mi fluidez en el lenguaje ya no es lo que era, pero aquí una base de la cual partir:

Código Delphi [-]
uses ComObj, Clipbrd;

(*
  Exporta el contenido de un DataSet a un archivo de Excel. Desde luego, Excel debe estar instalado
  en el sistema y el archivo resultante estará en el formato de la versión instalada.
*)
procedure Exportar(DataSet: TDataSet; Archivo: String);
var
  Excel, Libro: OleVariant;
  CSV: TStrings;
  Linea: String;

begin
  CSV := TStringList.Create;

  try
    DataSet.First;

    while not DataSet.Eof do
    begin
      Linea := '';

      for I := 0 to DataSet.Fields.Count - 1 do
        Linea := Linea + '"' + DataSet.Fields[i].AsString + '"' + #9;

      CSV.Add(Linea);
      DataSet.Next;
    end;

    Clipboard.AsText := CSV.Text;

    Excel := CreateOleObject('Excel.Application');
    Excel.SheetsInNewWorkbook := 1;
    Libro := Excel.WorkBooks.Add;
    Libro.ActiveSheet.Paste();
    Libro.SaveAs(Archivo);
  finally
    Excel.Quit;
    CSV.Free;
  end;
end;

LineComment Saludos
Responder Con Cita
  #2  
Antiguo 06-07-2017
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
No tengo Delphi a mano y mi fluidez en el lenguaje ya no es lo que era, pero aquí una base de la cual partir...
...y una buena base, por cierto. No te preocupes, Román, el lenguaje en el que debo aplicar ésta exportación es XBase++, casi nada.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #3  
Antiguo 06-07-2017
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por TiammatMX Ver Mensaje
[...]el lenguaje en el que debo aplicar ésta exportación es XBase++, casi nada.
¿Y por qué no lo decías, Felipe?

Si esa cosa, XBase++, admite DLLs de Windows (y la solución es para ejecutarse en Windows ), entonces podrías programar la solución en Delphi compilándola como DLL, y que la aplicación hecha en esa cosa, XBase++, llame a las funciones de la DLL para realizar la exportación.

La clase TghOpenXMLSpreadsheet y asociadas están pensadas para realizar diversas tareas con documentos de OpenXML, concretamente Excel de formato moderno. Sin embargo, no están aún lo suficientemente actualizadas para trabajar fuera de Delphi XE7 o permitir la escritura de forma fácil. Actualmente estoy trabajando en la adaptación para Delphi Berlin, en la cual pienso incluir también la capacidad de comprimir y descomprimir el documento.

Recordar que .xlsx no es más que un .zip con ciertas carpetas y archivos XML definidos por Microsoft.

¡Saludos!

Al González.

Última edición por Al González fecha: 06-07-2017 a las 23:12:22.
Responder Con Cita
  #4  
Antiguo 06-07-2017
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Cita:
Empezado por Al González Ver Mensaje
¿Y por qué no lo decías, Felipe? ...
Por que, compadre Al, en ésta empresa son ALÉRGICOS a VisualBASIC, C#, Delphi, ObjectPASCAL, Python..., o sea, a todo lo que NO sea su antiquísimo lenguaje para desarrollar. Por eso deseaba una solución general, que pudiera aplicar sin necesidad de dirigirla a un lenguaje específico.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #5  
Antiguo 06-07-2017
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
En una situación así, revisar el estándar de esos archivos puede ser un buen punto de partida: http://www.ecma-international.org/pu...s/Ecma-376.htm



¡A dónde te fuiste a meter, compadre! ¿Qué empresa es? ¿Industrias Picapiedra Jurasic Inc.?
Responder Con Cita
  #6  
Antiguo 06-07-2017
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Cita:
Empezado por Al González Ver Mensaje
...¡A dónde te fuiste a meter, compadre! ¿Qué empresa es? ¿Industrias Picapiedra Jurasic Inc.? ...
A una empresa en Puebla de Zaragoza, propiedad de un contador de casi 80 años y "lidereada" por un ingeniero de sistemas que no ha trabajado en NINGÚN OTRO SECTOR O EMPRESA..., ¿ahora entiendes por qué ME URGE salir de aquí?
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #7  
Antiguo 07-07-2017
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Y al final quedó así:

Código Delphi [-]
    oExcel := CreateObject( "Excel.Application" )
* FEOL No eliminar ésta línea, si'l vous plait...
*      oExcel:visible := .T.
      oExcel:SheetsInNewWorkbook := 1
    oHoja := oExcel:Workbooks:Add
      oSheet := oHoja:ActiveSheet
      oSheet:Cells( 1, 1 ):value := 'CODIGO'
      oSheet:Cells( 1, 2 ):value := 'PRECIO'
      oSheet:Cells( 1, 3 ):value := 'MONEDA'

      cStmt    := "SELECT ACODPRO, APREACT AS PRECIO, ATIPMON AS MONEDA FROM FALISPR WHERE ANUMLIS=?"
      oCurArti := ADODataSet():create( cStmt, gConn )
      oCurArti:Execute( oLis:value )

      DO WHILE !oCurArti:EOF()

        oSheet:Cells( iRen, 1 ):value := oCurArti:ACODPRO
        oSheet:Cells( iRen, 2 ):value := oCurArti:PRECIO
        oSheet:Cells( iRen, 3 ):value := oCurArti:MONEDA

         oCurArti:skip()
         iRen++
      ENDDO

      oHoja:SaveAs( cNomArc )
      oExcel:ActiveWorkbook:Close()
      oExcel:Quit()

OK, no es Delphi, pero creo que quedó entendible. Hace lo que debe, sin problemas o errores..., gracias a todos por su colaboración.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
Respuesta



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
Modificar un documento MS EXCEL 2003 [.xls] o 2007 [.xlsx] adrall Conexión con bases de datos 0 02-05-2016 15:12:11
Exportacion datos Excel 2007 hlbarragan Varios 2 22-09-2011 14:44:41
exportar datos de Dataset a XLSX nextor Conexión con bases de datos 3 20-12-2010 18:43:22
Tutorial Paso a Paso Exportación de datos de TQuery a Excel lKinGl Servers 0 06-11-2008 00:10:07
Exportación de datos de Excel a Tablas Paradox Mone Conexión con bases de datos 1 31-10-2005 21:15:40


La franja horaria es GMT +2. Ahora son las 13:53:44.


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