delphi 控制 EXCEL 数据透视表

时间:2021-08-14 11:21:14

虽说报表多又难做,做报表相当容易。

做报表也可以偷懒的,超级实用又省事。只需要做一个报表,这个报表里面包括几乎所有的数据字段,然后将查询到的数据导出到

excel中,利用excel自带的“数据透视”功能,客户只需要点几下鼠标就可以生成自己所需要的报表。通过这种方法,一个报表可以产生n个

报表。通过几行代码可以操纵excel打开“数据透视”功能。冒必要在自己的程序里面做数据透视功能了,要做到excel数据透视那种功能效果,

还是要花费不少时间的。

function GetExcelCol(iCol: integer): string;
begin
  Result := '';
  case iCol of
    1: Result := 'A';
    2: Result := 'B';
    3: Result := 'C';
    4: Result := 'D';
    5: Result := 'E';
    6: Result := 'F';
    7: Result := 'G';
    8: Result := 'H';
    9: Result := 'I';
    10: Result := 'J';
    11:Result :='K';
    12:Result :='L';
    13:Result :='M';
    14:Result :='N';
    15:Result :='O';
    16:Result :='P';
    17:Result :='Q';
    18:Result :='R';
    19:Result :='S';
    20:Result :='T';
    21:Result :='U';
    22:Result :='V';
    23:Result :='W';
    24:Result :='X';
    25:Result :='Y';
    26:Result :='Z';
  end;
end;

procedure TfrmReportSale.cxButton2Click(Sender: TObject); var   iRows, iColumns: Integer;   bb: OleVariant;   s:string; begin   if (not cds.Active) or cds.IsEmpty then     Exit;   if SaveDialog1.Execute then   begin     ExportGridToExcel(SaveDialog1.FileName, cxGrid1);

ExcelApp.Visible := True;     WorkBook := ExcelApp.WorkBooks.Open(SaveDialog1.FileName);     iRows := WorkBook.WorkSheets[1].UsedRange.Rows.Count - 1;     iColumns := WorkBook.WorkSheets[1].UsedRange.Columns.count;     s:=UntSysConst.GetExcelCol(iColumns);

bb := ExcelApp.ActiveWorkbook.PivotCaches.Add(xlDatabase,       '销售报表!A1:' + s + inttostr(iRows));     bb.CreatePivotTable('', '销售报表');     ExcelApp.ActiveSheet.PivotTables['销售报表'].SmallGrid := False;     application.Minimize;   end; end;