Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-02-2010
Bare Bare is offline
Miembro
 
Registrado: feb 2010
Posts: 29
Poder: 0
Bare Va por buen camino
Question Exportar Contenido DBGrid a Excel?

Que tal amigos foreros, estoy desarrollando una aplicacion y ya tengo todo lo necesario (base de datos, consultas, etc).
Veran, debo generar un reporte trimestral de estadisticas, los datos los consulto y los muestro en un DBGrid, pero necesito exportar todo lo que se este mostrando en el grid a un documento de excel..

Anteriormente hice algo parecido, solo que importaba datos de algunos Edit Labels a excel usando el ExcelOLEObject, solo que ahora no tengo la menor idea de como exportar los datos del DBGrid a excel...??

Estoy trabajando con C++Builder 6.

Cualquier Ayuda o Sugerencia es Bienvenida.


De Antemano, Gracias...


Saludos.
Responder Con Cita
  #2  
Antiguo 05-02-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.286
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 recomiendo el TmxExport de Max. Funcionan para Delphi y C++ Builder y funcionan de maravilla.
__________________
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 05-02-2010
Bare Bare is offline
Miembro
 
Registrado: feb 2010
Posts: 29
Poder: 0
Bare Va por buen camino
Que tal Neftali, ya lo baje pero no se como instalarlo al builder...
segui las instrucciones del leeme y descargue tambien el excelnative, pero aun no puedo...
intente hacerlo en la opcion de componentes del builder, pero me pide un archivo .cpp, y lo que vi tambien, que los archivos de paquetes son en dpk, y los de builder son bpk.

Me podrias explicar como puedo instalarle el componente??
y para usarse, hay alguna pagina para bajar ejemplos de codigos??




Saludos...
Responder Con Cita
  #4  
Antiguo 06-02-2010
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 18
_cero_ Va por buen camino
Thumbs up

mmm los traes de un DBGrid, en ese caso se puede entender que los datos que quieres exportar vienen de una base de datos no?
Qué te parece este código.
Código:
    //declaracion de variables
    Variant XL,v0,v1,v2,v3;

    //abres excel
    XL=Variant::CreateObject("excel.application");
    //la abres con la ventana visivle o si tiene false la ventana es invisible
    XL.OlePropertySet("Visible", true);
    //abre el archivo C:\\mi_archivo.xls, se puede "SaveAs" en lugar de "Open" para crear en lugar de abrir
    XL.OlePropertyGet("Workbooks").OleProcedure("Open", "C:\\mi_archivo.xls");
    //abres la hoja1 en este caso llamada reporte
    v0=XL.OlePropertyGet("Sheets", "Reporte");
    v1=v0.OlePropertyGet("Cells");

    //aqui pones el nombre de las columnas que vas usar de la BD
    String columnas[6]={"col1", "col2", "col3", "col4", "col5", "col6"};

    //qq es un query ya con una consulta hecha
    qq->First();
    for (int i = 1; i <= qq->RecordCount; i++) {
        for (int ii = 0; ii < 6; ii++) {
            //se va escribiendo dato por dato
            v1.OlePropertyGet("Cells", i+4, ii+1).OlePropertySet("Value",
                qq->FieldByName(columnas[ii])->AsString.t_str());
        }
        qq->Next();
    }

    XL.OlePropertySet("DisplayAlerts", false);
    XL.OleProcedure("Save");
    XL=Unassigned;

    MessageBoxA(Handle, "ya esta", "", MB_ICONINFORMATION
Responder Con Cita
  #5  
Antiguo 07-02-2010
Bare Bare is offline
Miembro
 
Registrado: feb 2010
Posts: 29
Poder: 0
Bare Va por buen camino
Que tal Cero, asi es, los datos los muestro en un DBGrid provenientes de una base de datos..

Probe el codigo q me pusiste, pero me tira este error:



Le movi algunas cosas y salio peor, me marcaba un error ASSET...:S

aqui te pongo como puse el codigo:

Código:
     //declaracion de variables
    Variant XL,v0,v1,v2,v3;

    //abres excel
    XL=Variant::CreateObject("excel.application");
    //la abres con la ventana visivle o si tiene false la ventana es invisible
    XL.OlePropertySet("Visible", true);
    //abre el archivo C:\\mi_archivo.xls, se puede "SaveAs" en lugar de "Open" para crear en lugar de abrir
    XL.OlePropertyGet("Workbooks").OleProcedure("SaveAs", "C:\\mi_archivo.xls");
    //abres la hoja1 en este caso llamada reporte
    v0=XL.OlePropertyGet("Sheets", "Reporte");
    v1=v0.OlePropertyGet("Cells");

    //aqui pones el nombre de las columnas que vas usar de la BD
    String columnas[19]={"Total_casos_colera", "cepas_positivasvibrio", "Total_muestrasproc", "Deter_cloro", "Total_detercloro",  "ID_coberturadeteccion"," P_coberturadeteccion","ID_tratoportuno","P_tratoportuno","ID_eficiencialab","P_eficiencialab","ID_cloracionagua","P_cloracionagua","Año","Localidad","Trimestre"};

    //qq es un query ya con una consulta hecha
    ADODataSet2->First();
    for (int i = 1; i <= ADODataSet2->RecordCount; i++) {
        for (int ii = 0; ii < 19; ii++) {
            //se va escribiendo dato por dato
            v1.OlePropertyGet("Cells", i+4, ii+1).OlePropertySet("Value",
                ADODataSet2->FieldByName(columnas[ii])->AsString.c_str());
        } //fin for i
        ADODataSet2->Next();
    } //fin for ii

    XL.OlePropertySet("DisplayAlerts", false);
    XL.OleProcedure("Save");
    XL=Unassigned;

    MessageBoxA(Handle, "listo vale", "", MB_ICONINFORMATION);
Las columnas se pusieron asi por la pagina, en el programa estan todas seguidas...


Porque me marcara ese error..??


Saludos..

Última edición por Neftali [Germán.Estévez] fecha: 08-02-2010 a las 09:57:55. Razón: Añadida la imagen
Responder Con Cita
  #6  
Antiguo 07-02-2010
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 18
_cero_ Va por buen camino
Thumbs up

Lo siento el código que te di era para abrir un xls ya creado con anterioridad, y meterle los datos (en mi opinión es mejor ya que puedes poner imágenes y darle un formato más agradable de una forma fácil).

Ahora para crear el xls desde cero solo se necesitarían unas pequeñas modificaciones que son:
Código:
    Variant XL,v0,v1; //quite variables que no se usan
    XL=Variant::CreateObject("excel.application");
    XL.OlePropertySet("Visible", true);
    XL.OlePropertyGet("Workbooks").OleProcedure("Add"); //se agrega un libro
    //Aqui e se cambia Reporte por Hoja1 que es el nombre por defecto de las hojas de excel
    v0=XL.OlePropertyGet("Sheets", "Hoja1");
    v1=v0.OlePropertyGet("Cells");

    //DATOS//
    //se escriben los datos como ya lo haces
    v1.OlePropertyGet("Cells", 2/*cordenada y*/, 3/*cordenada x*/).OlePropertySet("Value", "lolo");


    XL.OlePropertySet("DisplayAlerts", false);
    //aqui es donde se guarda
    XL.OlePropertyGet("Workbooks").OlePropertyGet("Item",1).OleProcedure("SaveAs", "C:\\test.xlsx"/*xlsxpor que uso office 2007*/);
    XL=Unassigned;
Pd. La parte de los datos se queda exactamente igual, solo se cambia la forma en la que se trabaja con “XL”.

Pd2. Ese error da cuando se intenta acceder a una función que no existe, debido a que el manejo de “OleProcedure” es complejo no me di cuenta de los dos fallos del anterior código. Nos vemos y cuenta como te fue.

Edito: en caso de que abras Excel de forma oculta, no se te olvide poner “XL.OleProcedure("Quit");” antes de “XL=Unassigned;” para cerrarlo, de lo contrario se quedara abierto y solo se serrara terminando el proceso en el administrador.

Última edición por _cero_ fecha: 07-02-2010 a las 05:48:26.
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
Exportar un DBGRID a excel con formato de fecha Luis Castro Varios 3 21-01-2011 21:54:38
exportar a excel rakka Varios 12 03-09-2008 00:53:31
Exportar un DBGRID a excel luisneria Varios 4 16-03-2007 23:34:43
exportar dbgrid a excel stuka Varios 7 21-07-2006 00:16:33
Exportar a Excel pruz Varios 8 01-07-2004 15:47:37


La franja horaria es GMT +2. Ahora son las 07:35:09.


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