• Jueves 30 de Mayo de 2024, 18:33

Autor Tema:  Exportar Stringgrid  (Leído 2980 veces)

Vatoicc

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
Exportar Stringgrid
« en: Viernes 30 de Junio de 2006, 02:03 »
0
Como me es posible guardar el contenido de un StringGrid en un archivo de exel?

E tratado de usar los componentes de office que trae el Builder, pero no e sabido como usarlos.

Si alguine me puede dar un norte o pasarme un ejemplo, les agradeceria mucho
La paranoia es una vision mas sutil de la vida

Vatoicc

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
Re: Exportar Stringgrid
« Respuesta #1 en: Sábado 1 de Julio de 2006, 20:47 »
0
Pues enctre una manera indirecta de poner el contenido del StringGrid en un archivo que puede habrir Excel.

Código: Text
  1.  
  2. TStringList *File = new TStringList();
  3.    File->Clear();
  4.    for( int Row = 0; Row < StringGrid1->RowCount; Row++ )
  5.    {
  6.       AnsiString Linea = "";
  7.       for( int Col = 0; Col < StringGrid1->ColCount; Col++ )
  8.       {
  9.          Linea += StringGrid1->Cells[Col][Row]+",";
  10.       }
  11.       //Quitar la ultima ','
  12.       Linea.Delete(Linea.Length(),1);
  13.       File->Append( Linea );
  14.    }
  15.    //Guardar
  16.    File->SaveToFile( "c:\\tabla.csv" );
  17.  
  18.  

Es un archivo de texto con formato, separado por comas con extención CSV. Hasta ahora me a saco de apuros, pero lo que busco es ponerlo en un archivo XLS.

Espero y puedan ayudarme
La paranoia es una vision mas sutil de la vida

eL_MoStRo

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Re: Exportar Stringgrid
« Respuesta #2 en: Jueves 27 de Julio de 2006, 18:49 »
0
Intenta con esto, originalmentew yo lo tenia con un DBGrid pero cro que asi debe de funcionar
Código: Text
  1.  
  2. Variant oExcel, oWkBook, oSheet, oCell;
  3.  
  4.     try {
  5.         oExcel = Variant::CreateObject("Excel.Application");
  6.         oExcel.OlePropertySet("Visible", (Variant)true);
  7.     }
  8.     catch (Exception &exception) {
  9.         MessageBox(0,"Probablemente Microsoft Excel no se encuentre instalado", "Error de comunicacion", MB_OK | MB_ICONERROR);
  10.         return;
  11.     }
  12.  
  13.     oWkBook = oExcel.OlePropertyGet("WorkBooks");
  14.     oWkBook.OleProcedure("Add");
  15.  
  16.     oSheet = oWkBook.OlePropertyGet("Item",(Variant)1);
  17.     oWkBook = oSheet.OlePropertyGet("Worksheets");
  18.  
  19.     oWkBook.OlePropertyGet("Item", (Variant)1).OlePropertySet("Name","Consulta");
  20.  
  21.     oSheet = oWkBook.OlePropertyGet("Item",1);
  22.  
  23.     for (int iI = 0; iI < StringGrid1->RowCount; iI++)
  24.         for (int iJ = 0; iJ < StringGrid1->ColCount; iJ++)
  25.              oSheet.OlePropertyGet("Cells").OlePropertyGet("Item",iI + 1,iJ + 1).OlePropertySet("Value",(Variant)(WideString)StringGrid1->Cells[iJ][iI]);
  26.  
  27.     oExcel = Unassigned;
  28.  
  29.  

Si no te funciona me avisas para ver ke puede ser lo que esta mal

wako13

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: Exportar Stringgrid
« Respuesta #3 en: Jueves 27 de Julio de 2006, 21:00 »
0
Una forma de acelerar el envío de datos es hacerlo enviando grupos de celdas en vez de celda a celda

//by _LEO
// Creamos el array donde copiaremos los datos a enviar
int bounds[4] = {0, StringGrid1->RowCount-1, 0, StringGrid1->ColCount-1};
Variant data = VarArrayCreate(bounds, 3, varVariant);

// Copiamos el contenido del StringGrid en el array
for (int y=0; y<StringGrid1->RowCount; y++)
    for (int x=0; x<StringGrid1->ColCount; x++)
        data.PutElement(StringGrid1->Cells
  • [y], y, x);


//---> Usamos una instancia de excel abierta
Variant excel = GetActiveOleObject("Excel.Application");
Variant sheet = excel.OlePropertyGet("ActiveSheet");

// Seleccionamos el princio del rango
Variant range = sheet.OlePropertyGet("Range", "A1");

// Adaptamos el tamaño del rango a nuestro array
range = range.OlePropertyGet("Resize",
    StringGrid1->RowCount, StringGrid1->ColCount);

// Enviamos los datos del array
range.OlePropertySet("Value", data);

Vatoicc

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
Re: Exportar Stringgrid
« Respuesta #4 en: Viernes 28 de Julio de 2006, 04:28 »
0
Muy buen codigo :good: , funciono muy bien. Ya lo implemente en mi aplicacion.

Gracias :hippi:
La paranoia es una vision mas sutil de la vida