Jogando dados de uma Query para uma planilha do Excel

27/01/2016

1

Eu preciso jogar os dados de uma query de forma que a planilha fique da seguinte maneira:[img]http://arquivo.devmedia.com.br/forum/imagem/433267-20160127-093211.png[/img]

Porém, com a codificação que eu fiz ela está saindo assim:
[img]http://arquivo.devmedia.com.br/forum/imagem/433267-20160127-093537.png[/img]

O código que estou usando é esse:
procedure TfrmRel_Gerenciador.Gerar_Excel_HsTrabalhadas;
Var
ObjExcel : Variant;
cTitulo, func, a1, a2, a3, a4, a5, a6, aa1, aa2, aa3, aa4, aa5, aa6, b1, b2, b3, b4, b5, soma1: String;
L,C: Integer;
begin
  Try
        ObjExcel := CreateOleObject('Excel.Application');
        ObjExcel.WorkBooks.Add;

        //Cabeçalho do Relatório

        ObjExcel.cells.range['a1.k100'].font.name := 'Arial';
        objExcel.Cells[1,1] := 'Relatório de Horas Trabalhadas';
        objExcel.Cells.Range['a1:c1'].MergeCells := true;
        objExcel.Cells.Range['a1:c1'].horizontalalignment := 1;
        ObjExcel.cells[1,1].Font.Bold := True;
        ObjExcel.cells[1,1].Font.Size := 12;

        objExcel.Cells[2,1] := 'Período: '+ DateToStr(DtDeInicio.Date) + ' a '+DateToStr(DtDeTermino.Date);
        objExcel.Cells.Range['a2:b2'].MergeCells := true;
        objExcel.Cells.Range['a2:b2'].horizontalalignment := 1;
        ObjExcel.cells[2,1].Font.Bold := True;
        ObjExcel.cells[2,1].Font.Size := 10;

        ObjExcel.cells[4,1].Font.Bold  := True;
        ObjExcel.cells[4,2].Font.Bold  := True;
        ObjExcel.cells[4,3].Font.Bold  := True;
        ObjExcel.cells[4,4].Font.Bold  := True;
        ObjExcel.cells[4,5].Font.Bold  := True;
        ObjExcel.cells[4,6].Font.Bold  := True;
        ObjExcel.cells[4,7].Font.Bold  := True;
        ObjExcel.cells[4,8].Font.Bold  := True;
        ObjExcel.cells[4,9].Font.Bold  := True;
        ObjExcel.cells[4,10].Font.Bold := True;
        ObjExcel.cells[4,11].Font.Bold := True;

        objExcel.Cells[4,1]  := 'Cartão';
        objExcel.Cells[4,2]  := 'Funcionário';
        objExcel.Cells[4,3]  := 'Cargo';

        objExcel.Cells[4,5]  := 'TB';
        objExcel.Cells[4,6]  := 'AN';
        objExcel.Cells[4,7]  := 'EX';
        objExcel.Cells[4,8]  := 'EN';
        objExcel.Cells[4,9]  := 'AB';
        objExcel.Cells[4,10] := 'HF';
        objExcel.Cells[4,11] := 'TOTAL';

        L:= 5;

        dmDados.dbHsTrabalhadas.First;
        while not dmDados.dbHsTrabalhadas.Eof do
        begin

            objExcel.Cells[L,1] := dmDados.dbHsTrabalhadas.FieldByName('CODIGO_CRACHA').AsString;
            objExcel.Cells[L,1].numberformat := '0';
            objExcel.Cells[L,2] := dmDados.dbHsTrabalhadas.FieldByName('NOME_FUNCIONARIO').AsString;
            objExcel.Cells[L,3] := dmDados.dbHsTrabalhadas.FieldByName('DESCRICAO_CARGO').AsString;

            objExcel.Cells[L,5].numberformat := '[h]:mm';
            objExcel.Cells[L,5] := dmDados.dbHsTrabalhadas.FieldByName('HTA').AsString;
            a1:= objExcel.Cells[L,5];

            objExcel.Cells[L,6].numberformat := '[h]:mm';
            objExcel.Cells[L,6] := dmDados.dbHsTrabalhadas.FieldByName('ANO').AsString;
            a2:= objExcel.Cells[L,6];

            objExcel.Cells[L,7].numberformat := '[h]:mm';
            objExcel.Cells[L,7] := dmDados.dbHsTrabalhadas.FieldByName('HEX').AsString;
            a3:= objExcel.Cells[L,7];

            objExcel.Cells[L,8].numberformat := '[h]:mm';
            objExcel.Cells[L,8] := dmDados.dbHsTrabalhadas.FieldByName('ENO').AsString;
            a4:= objExcel.Cells[L,8];

            objExcel.Cells[L,9].numberformat := '[h]:mm';
            objExcel.Cells[L,9] := dmDados.dbHsTrabalhadas.FieldByName('ATR').AsString;
            a5:= objExcel.Cells[L,9];

            objExcel.Cells[L,9] := dmDados.dbHsTrabalhadas.FieldByName('HFA').AsString;

            objExcel.Cells[L,11].numberformat := '#';
            objExcel.Cells[L,11] := a1 + a2 + a3 + a4 + a5;

            Inc(L);

            dmDados.dbHsTrabalhadas.Next;

        end;

             dmDados.dbHsTrabalhadas.Next;

        Inc(L);

        //Totais

        objExcel.Cells[L,4] := 'TOTAIS';
        objExcel.Cells[L,5] := dmDados.Filtro.FieldByName('TOTAL_TRABALHADA').AsString;
        b1 := objExcel.Cells[L,5];

        objExcel.Cells[L,5].numberformat := '[h]:mm';
        objExcel.Cells[L,6] := dmDados.Filtro.FieldByName('TOTAL_ADICIONAL').AsString;
        b2 := objExcel.Cells[L,6];

        objExcel.Cells[L,6].numberformat := '[h]:mm';
        objExcel.Cells[L,7] := dmDados.Filtro.FieldByName('TOTAL_EXTRA').AsString;
        b3 := objExcel.Cells[L,7];

        objExcel.Cells[L,7].numberformat := '[h]:mm';
        objExcel.Cells[L,8] := dmDados.Filtro.FieldByName('TOTAL_EXTRA_NOTURNA').AsString;
        b4 := objExcel.Cells[L,8];

        objExcel.Cells[L,8].numberformat := '[h]:mm';
        objExcel.Cells[L,9] := dmDados.Filtro.FieldByName('TOTAL_ATRASO').AsString;
        b5 := objExcel.Cells[L,9];

        objExcel.Cells[L,9].numberformat := '[h]:mm';

        objExcel.Cells[L,10] := dmDados.Filtro.FieldByName('TOTAL_FALTOSA').AsString;
        objExcel.Cells[L,10].numberformat := '[h]:mm';

        objExcel.Cells[L,11].numberformat := '[h]:mm';

        ObjExcel.cells[l,4].Font.Bold  := True;
        ObjExcel.cells[l,5].Font.Bold  := True;
        ObjExcel.cells[l,6].Font.Bold  := True;
        ObjExcel.cells[l,7].Font.Bold  := True;
        ObjExcel.cells[l,8].Font.Bold  := True;
        ObjExcel.cells[l,9].Font.Bold  := True;
        ObjExcel.cells[l,10].Font.Bold := True;
        ObjExcel.cells[l,11].Font.Bold := True;

  If not ObjExcel.Application.Visible then
     ObjExcel.Application.Visible := True;

   Except
   ShowMessage('Ocorreu Erro durante a criação');
   End;

   ObjExcel.columns.Autofit;
   ObjExcel.columns.Range['e1:j1'].ColumnWidth:= 7.25;
   ObjExcel.columns.Range['c1'].ColumnWidth:= 12;
   objExcel.Columns.Range['c5:c100'].horizontalalignment := 4;

end;
Responder