Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-08-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Grabar planilla

Mi gustaria de abrir la planilla abajo y no salvar com estas en su codigo. La gran necesidad, es que quando el usuario generar esa planilla, el deve abrila y no salvala y no se como hacer. Una ayuda es bien venida, gracias. Y como hago para diminuir el tamaño de las celdas? Para que se crie celdas mas delgada y no grande, pero para esto tengo que hacer con que los datos sean del tamaño de la celda, cierto?
Código Delphi [-]
function TF_GeraGridExcel.GridToExcelFile(Grid: TDbGrid; ExcelFile: String;
  TotalRegistros: Integer): Boolean;
var
  bResult   : Boolean;
  SavePlace : TBookmark;
  i,eline   : Integer;
  Excel     : Variant;
  iSheet    : Integer;
  CorFundo  : TColor;
begin
  bResult:= False;
  // If dataset is assigned and active runs Excel
  if Assigned(Grid.DataSource) then
  begin
    if Grid.DataSource.DataSet.Active then
    begin
      try
        //Rotina para setar um painel com um ProgressBar
        //SetaPainelMensagem(cExportandoRegistros, TotalRegistros);
        Excel:= CreateOleObject('Excel.Application');
        Excel.Visible:= False;
        Excel.WorkBooks.Add;
        //Definindo o número de worksheets
        if  (TotalRegistros > 65000) then
        begin
          if  ((TotalRegistros Mod 65000) = 0) then
            iSheet := TotalRegistros DIV 65000
          else
            iSheet := (TotalRegistros DIV 65000) + 1;
          if  (iSheet > 3) then
            //Adicionando as worksheets que faltam a partir da 3 planilha do excel
            For i:= 4 to iSheet do
              Excel.WorkBooks[1].Sheets.Add(null, Excel.WorkBooks[1].Sheets[i-1]);
        end;
        // Save grid Position
        SavePlace:= Grid.DataSource.DataSet.GetBookmark;
        Grid.DataSource.DataSet.First;
        //Sheet atual
        iSheet := 1;
        // Montando cabeçalho da planilha
        if not (Grid.DataSource.DataSet.Eof) then
        begin
          eline:= 1; // Posicionando na primeira linha da planilha(Sheet) para por o cabeçalho
          for i:=0 to (Grid.Columns.Count-1) do
          begin
            Excel.WorkBooks[1].Sheets[iSheet].Cells[eline,(i+1)]                := Grid.Columns[i].Title.Caption;
            Excel.WorkBooks[1].Sheets[iSheet].Cells[eline,(i+1)].ColumnWidth    := Grid.Columns[i].Field.DisplayWidth;
            Excel.WorkBooks[1].Sheets[iSheet].Cells[eline,(i+1)].Font.FontStyle := 'Negrito';
            Excel.WorkBooks[1].Sheets[iSheet].Cells[eline,(i+1)].Interior.Color := (ColorToRgb(Grid.Columns[i].Title.Color));
            Excel.WorkBooks[1].Sheets[iSheet].Cells[eline,(i+1)].Font.Color     := (ColorToRgb(Grid.Columns[i].Title.Font.Color));
          end;
        end;
        while not Grid.DataSource.DataSet.Eof do //Preenchendo o restante da planilha com os dados
        begin
          Inc(eline); //Incrementa a posição da linha para preencher no excel
          //pbInformacao.StepBy(1);
          Application.ProcessMessages;
          //Se passar de 65000 linhas, jogar dado na outra planilha, remontando os cabeçalhos antes
          if (eline > 65000) then
          begin
            Inc(iSheet);
            eline := 1;
            for i:=0 to (Grid.Columns.Count-1) do
            begin
              Excel.WorkBooks[1].Sheets[iSheet].Cells[eline,(i+1)]                := Grid.Columns[i].Title.Caption;
              Excel.WorkBooks[1].Sheets[iSheet].Cells[eline,(i+1)].ColumnWidth    := Grid.Columns[i].Field.DisplayWidth;
              Excel.WorkBooks[1].Sheets[iSheet].Cells[eline,(i+1)].Font.FontStyle := 'Negrito';
              Excel.WorkBooks[1].Sheets[iSheet].Cells[eline,(i+1)].Interior.Color := (ColorToRgb(Grid.Columns[i].Title.Color));
              Excel.WorkBooks[1].Sheets[iSheet].Cells[eline,(i+1)].Font.Color     := (ColorToRgb(Grid.Columns[i].Title.Font.Color));
            end;
            Inc(eline);
          end;
          //Para mudar a cor de fundo da linha na planilha do excell
          If (eline mod 2) = 0 then
            CorFundo := clInfoBk
          else
            CorFundo := clAqua;
          for i:=0 to (Grid.Columns.Count-1) do
          begin
            Excel.WorkBooks[1].Sheets[iSheet].Cells[eline,(i+1)]                := Grid.Columns[i].Field.AsString;
            Excel.WorkBooks[1].Sheets[iSheet].Cells[eline,(i+1)].Interior.Color := (ColorToRgb(CorFundo));
            Excel.WorkBooks[1].Sheets[iSheet].Cells[eline,(i+1)].Font.Color     := (ColorToRgb(Grid.Columns[i].Font.Color));
            Excel.WorkBooks[1].Sheets[iSheet].Cells[eline,(i+1)].Borders.Color  := (ColorToRgb(clGray));
          end;
          Grid.DataSource.DataSet.Next;
        end;
        //Ajustando o tamanho das colunas nas planilhas
        For i:= 1 to iSheet do
          Excel.WorkBooks[1].WorkSheets[i].Range['B1','AQ1000'].Columns.AutoFit;
        // Set saved grid position
        Grid.DataSource.DataSet.GotoBookmark(SavePlace);
        // Salvando o arquivo
        Excel.WorkBooks[1].SaveAs(ExcelFile);
        Excel.Quit;
        bResult:= True;
        //pnlMensagem.Visible := False;
      except
        bResult:= False;
        Excel.Quit;
        //pnlMensagem.Visible := False;
      end;
    end;
  end;
  Result := bResult;
end;
Responder Con Cita
  #2  
Antiguo 04-08-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Creo que yo resolvi asi:
Código Delphi [-]
Grid.DataSource.DataSet.GotoBookmark(SavePlace);
        // Salvando o arquivo
        //Excel.WorkBooks[1].SaveAs(ExcelFile, False);
        Excel.Visible:= True;//Esta linea aca 
        //Excel.Quit;
        bResult:= True;
Responder Con Cita
  #3  
Antiguo 04-08-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Otra pregunta. Es posible yo generar esta planilla y en la celda 'Descrição' ya cargar sin la quebra de linea? Pues para este campo viene com quebra de linea, pues este campo es Text(Blob).
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Generar planilla en excel Paulao Varios 0 04-08-2011 13:52:41
Como importar datos a una planilla ya hecha en exel mefixxto Conexión con bases de datos 3 29-09-2008 23:38:46
Como cargo una planilla excel pruz OOP 3 11-07-2007 10:36:55
Exportar datos a una planilla Escel Perio Varios 3 18-04-2005 23:29:28
generación de planilla excel super rapido acertij022 Servers 5 13-02-2004 15:27:31


La franja horaria es GMT +2. Ahora son las 15:44:16.


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