Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Formatear un rango en excel
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Formatear un rango en excel

Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
aim22
Usuario


Registrado: Mar 19, 2009
Mensajes: 1

Asunto: Formatear un rango en excel Responder citando

Buen día. Apenas ayer encontre el artículo http://www.ajpdsoft.com/modules.php?name=Content&pa=showpage&pid=117

Me fue de gran utilidad para una pequeña aplicación que hice en el trabajo, solo me queda una duda. En caso de querer darle un ancho diferente a cada una de mis columnas ¿cómo podría hacerlo?

Muchas Gracias.
MensajePublicado:
Jue Mar 19, 2009 4:11 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Formatear un rango en excel Responder citando



Anuncios



aim22 escribió:
Buen día. Apenas ayer encontre el artículo http://www.ajpdsoft.com/modules.php?name=Content&pa=showpage&pid=117

Me fue de gran utilidad para una pequeña aplicación que hice en el trabajo, solo me queda una duda. En caso de querer darle un ancho diferente a cada una de mis columnas ¿cómo podría hacerlo?

Muchas Gracias.


Prueba con esta modificación:

Código:

procedure exportarGridExcel (mGrid : tdbgrid);
var
  rangoExcel : Excel2000.range;
  i, fila : integer;
  mMarcador : Tbookmarkstr;
  mTabla : tdataset;
  aplicacionExcel : TExcelApplication;
begin
  //creamos libro excel (abriendo Excel)
  aplicacionExcel := TExcelApplication.Create(nil);
  //asociamos el dataset (tabla) del DBGrid con la tabla
  //que utilizaremos en esta función
  mTabla := mGrid.datasource.dataset;
  //mostramos Excel
  aplicacionExcel.Visible[0] := true;
  //creamos un nuevo libro de Excel
  aplicacionExcel.workbooks.add(NULL, 0);

  //primera fila con los nombres de las columnas
  //para ello recorremos todos las columnas de la tabla
  //y mostramos en Excel el valor de "DisplayLabel"
  rangoExcel := aplicacionExcel.ActiveCell;
  for i:= 0 to mTabla.Fields.Count - 1 do
  begin
    rangoExcel.Value := mTabla.Fields[i].DisplayLabel;
    rangoExcel := rangoExcel.Next;
    rangoExcel.ColumnWidth := mTabla.Fields[i].Size;
  end;

  //aplicamos un autoformato de Excel a las filas y columnas añadidas
  //rangoExcel.AutoFormat(10, NULL, NULL, NULL, NULL, NULL, NULL);

  mTabla.DisableControls;
  try
    mMarcador := mTabla.Bookmark;
    try
      //recorremos todos los registros de la tabla para ir añadiéndolos
      //a la hoja actual de Excel
      mTabla.First;
      fila := 2;
      while not mTabla.Eof do
      begin
        rangoExcel := aplicacionExcel.Range['A' + inttostr(fila), 'A' + inttostr(fila)];
        //recorremos todos las columnas del registro actual
        for i := 0 to mTabla.Fields.Count - 1 do
        begin
          rangoExcel.Value := mTabla.Fields[i].AsString;
          rangoExcel := rangoExcel.Next;
        end;
        mTabla.Next;
        Inc(fila);
      end;
      finally
        mTabla.Bookmark := mMarcador;
      end;
    finally
      mTabla.EnableControls;
    end;
end;


Te indicamos lo único que hemos modificado con respecto al procedimiento inicial:


for i:= 0 to mTabla.Fields.Count - 1 do
begin
rangoExcel.Value := mTabla.Fields[i].DisplayLabel;
rangoExcel := rangoExcel.Next;
rangoExcel.ColumnWidth := mTabla.Fields[i].Size;
end;


y hemos comentado la línea:

//aplicamos un autoformato de Excel a las filas y columnas añadidas
//rangoExcel.AutoFormat(10, NULL, NULL, NULL, NULL, NULL, NULL);
MensajePublicado:
Mar Mar 24, 2009 7:02 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Formatear un rango en excel Responder citando



Anuncios



En realidad, lo que le indicamos con:

Código:

  rangoExcel.ColumnWidth := mTabla.Fields[i].Size;


Es que le ponga como ancho de la columna el tamaño por defecto del campo actual de la tabla. Si quieres poner un ancho fijo manual tendrás que hacerlo columna a columna, con:


Código:

  rangoExcel.ColumnWidth := 50;


Ultima edición por alonsojpd el Mar Mar 24, 2009 7:07 am, editado 1 vez
MensajePublicado:
Mar Mar 24, 2009 7:04 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Formatear un rango en excel Responder citando



Anuncios



alonsojpd escribió:
En realidad, lo que le indicamos con:

Código:

  rangoExcel.ColumnWidth := mTabla.Fields[i].Size;


Es que le ponga como ancho de la columna el tamaño por defecto del campo actual de la tabla. Si quieres poner un ancho fijo manual tendrás que hacerlo columna a columna, con:


Código:

  rangoExcel.ColumnWidth := 50;


Ten en cuanta que si lo haces de forma automática con mTabla.Fields[i].Size no te aparecerán en Excel las columnas con tamaño 1, en realidad si están pero casi no se aprecian.
MensajePublicado:
Mar Mar 24, 2009 7:06 am
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Este sitio web NO CONTIENE malware, todos los programas con código fuente aquí. Autor: Alonso Javier Pérez Díaz Google+ Síguenos en Google+