Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Ajustar ancho y alto una celda de excel (https://www.clubdelphi.com/foros/showthread.php?t=92236)

pollo_c 04-09-2017 05:12:13

Ajustar ancho y alto una celda de excel
 
Estimados:
Solicito su apreciable ayuda para ampliar el alto y ancho de una celda de excel, tengo el siguiente codigo solo me falta ajustar los tamaños de las celdas.

Código Delphi [-]
  Variant Excel,Libro,Hoja,Celda;
  int hoja=1,fil=1;
  char f[256];
  Excel=CreateOleObject("Excel.Application");
  Excel.OlePropertySet("Visible", true);
  Libro=Excel.OlePropertyGet("Workbooks");
  Libro.OleProcedure("Add");
  Hoja=Libro.OlePropertyGet("Item",1);
  Libro=Hoja.OlePropertyGet("Worksheets");

  Libro.OlePropertyGet("Item",1).OlePropertySet("Name","COMPUMUNDO INOVATEC");
///  Libro.OlePropertyGet("Item",2).OlePropertySet("Name","The yellow book-keeping ");

  Hoja=Libro.OlePropertyGet("Item",hoja);


  DataModule1->QAuxPueblos->Close();
  DataModule1->QAuxPueblos->SQL->Clear();
  DataModule1->QAuxPueblos->SQL->Add("SELECT * FROM regiones");
  DataModule1->QAuxPueblos->Open();
  DataModule1->QAuxPueblos->First();
  while (!DataModule1->QAuxPueblos->Eof)
  {

    DataModule1->CAuxRep->Close();
    DataModule1->CAuxRep->SQL->Clear();
    DataModule1->CAuxRep->SQL->Add("SELECT 
    id_rep,fecha_rep,nombre_rep,falla_rep,numero_tel,id_pue,direc_rep,reg.dscr_r,id_usu,edo_rep,id_tec,s  olucion FROM REPORTES rep,  
    regiones reg where rep.inc_r=reg.inc_r and edo_rep=0 and rep.inc_r= "+DataModule1->QAuxPueblos->FieldByName("inc_r")->Text);
    DataModule1->CAuxRep->Open();
    DataModule1->CAuxRep->First();

    strcpy(f, DataModule1->QAuxPueblos->FieldByName("dscr_r")->Text.c_str());
    Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",fil,1).OlePropertySet("Value",f);
    fil++;

    while (!DataModule1->CAuxRep->Eof)
   {
      strcpy(f, DataModule1->CAuxRep->FieldByName("id_rep")->Text.c_str());
      Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",fil,1).OlePropertySet("Value",f);
      //Hoja.OlePropertyGet("Cells").OlePropertyGet("AutoFit",fil,1);

      strcpy(f, DataModule1->CAuxRep->FieldByName("fecha_rep")->Text.c_str());
      Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",fil,2).OlePropertySet("Value",f);
      strcpy(f, DataModule1->CAuxRep->FieldByName("nombre_rep")->Text.c_str());
      Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",fil,3).OlePropertySet("Value",f);
      strcpy(f, DataModule1->CAuxRep->FieldByName("falla_rep")->Text.c_str());
      Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",fil,4).OlePropertySet("Value",f);
      strcpy(f, DataModule1->CAuxRep->FieldByName("numero_tel")->Text.c_str());
      Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",fil, 5).OlePropertySet("Value",f);
      strcpy(f, DataModule1->CAuxRep->FieldByName("id_pue")->Text.c_str());
      Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",fil,6).OlePropertySet("Value",f);
      strcpy(f, DataModule1->CAuxRep->FieldByName("direc_rep")->Text.c_str());
      Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",fil,7).OlePropertySet("Value",f);
      fil++;
      DataModule1->CAuxRep->Next();
    }
   DataModule1->QAuxPueblos->Next();
   fil+=6;
  } // fin del ciclo para mover hojas

  Excel.OlePropertySet("DisplayAlerts",false); //suppress the warning dialog on closing the server
  Excel.OlePropertyGet("Workbooks").OlePropertyGet("Item",1).OleProcedure("SaveAs","test.xls");
  //Excel.OleProcedure("Quit"); Cierra el libro abierto
  Excel=Unassigned;



Saludos.

Casimiro Notevi 04-09-2017 09:03:07

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

pollo_c 04-09-2017 15:28:42

Etiqueta para codigo
 
Estimado Casimiro:

Una disculpa por la etiqueta que falto, busque como modificar mi pregunta para activar la etiqueta, pero no encuentro la opción, me recomiendas cerrar el tema y volverlo a postear? o que acción me recomiendas.

Saludos

duilioisola 04-09-2017 15:33:18

Supongo que deberías probar con la propiedad "Width" o "ColumnWidth".
En algún lugar leí que si utilizas ColumnWidth, todas las columnas serán del mismo tamaño (dentro del rango de celdas)

Código:

AnchoDeColumna = 20.00;
Variant Range = WorkSheet.OlePropertyGet("Cells", iRow+1, iCol+1);
Range.OlePropertySet("ColumnWidth", AnchoDeColumna);

Edito
Acabo de encontrar estos links:

http://www.clubdelphi.com/foros/arch...p?t-10866.html
http://programacion.net/foros/c-c-pl...desde_c_261186

Casimiro Notevi 04-09-2017 17:31:29

Cita:

Empezado por pollo_c (Mensaje 520813)
Estimado Casimiro:
Una disculpa por la etiqueta que falto, busque como modificar mi pregunta para activar la etiqueta, pero no encuentro la opción, me recomiendas cerrar el tema y volverlo a postear? o que acción me recomiendas.
Saludos

Solamente tenlo en cuenta para futuras ocasiones ^\||/

pollo_c 05-09-2017 07:20:37

Solucionado
 
Estimado duilioisola:

Muchas gracias por tu tiempo, la información me ayudo mucho, ya acomodo las filas al tamaño de mi necesidad.

Saludos Cordiales

Código Delphi [-]
 Hoja.OlePropertyGet("Columns").OlePropertyGet("Item",(Variant)1).OlePropertySet("ColumnWidth",(Varia  nt)10);
                Hoja.OlePropertyGet("Columns").OlePropertyGet("Item",(Variant)2).OlePropertySet("ColumnWidth",(Varia  nt)20);
                Hoja.OlePropertyGet("Columns").OlePropertyGet("Item",(Variant)3).OlePropertySet("ColumnWidth",(Varia  nt)25);
                Hoja.OlePropertyGet("Columns").OlePropertyGet("Item",(Variant)4).OlePropertySet("ColumnWidth",(Varia  nt)40);
                Hoja.OlePropertyGet("Columns").OlePropertyGet("Item",(Variant)5).OlePropertySet("ColumnWidth",(Varia  nt)20);
                Hoja.OlePropertyGet("Columns").OlePropertyGet("Item",(Variant)6).OlePropertySet("ColumnWidth",(Varia  nt)15);
                Hoja.OlePropertyGet("Columns").OlePropertyGet("Item",(Variant)7).OlePropertySet("ColumnWidth",(Varia  nt)35);
    
                Hoja.OlePropertyGet("Rows").OlePropertyGet("Item",(Variant)fil).OlePropertySet("RowHeight",(Variant)  45);


La franja horaria es GMT +2. Ahora son las 15:26:22.

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