unit uDiagrammMitExcel;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, comobj, Excel2000;
type
TfrmMainMenue =
class(TForm)
Tabelle: TStringGrid;
btnExcelDiagrammZeigen: TButton;
procedure FormCreate(Sender: TObject);
procedure btnExcelDiagrammZeigenClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
Excel : Variant;
end;
var
frmMainMenue: TfrmMainMenue;
implementation
{$R *.dfm}
procedure TfrmMainMenue.FormCreate(Sender: TObject);
var
zeile: integer;
spalte: integer;
begin
// StrinGrid-Tabelle mit Zufallszahlen füllen
Randomize;
Tabelle.colwidths[0] := 42;
Tabelle.colwidths[1] := 90;
Tabelle.colwidths[2] := 90;
Tabelle.colwidths[3] := 90;
Tabelle.colwidths[4] := 90;
Tabelle.cells[1,0] := '
Nord';
Tabelle.cells[2,0] := '
Süd';
Tabelle.cells[3,0] := '
West';
Tabelle.cells[4,0] := '
Ost';
for zeile := 1
to 12
do
begin
Tabelle.cells[0,zeile]:= Format('
%d',[2008-zeile]);
for spalte:=1
to 5
do
begin
Tabelle.cells[spalte, zeile]:= Format('
%d',[Random(1000)]);
end;
end;
end;
procedure TfrmMainMenue.btnExcelDiagrammZeigenClick(Sender: TObject);
var
zeile: integer;
spalte: integer;
Diagramm1: OleVariant;
begin
try
Excel := CreateOleObject('
Excel.Application');
except
ShowMessage('
Excel konnte nicht gestartet werden !');
Exit;
end;
Excel.Workbooks.Add;
// Daten vom StringGridTabelle nach Excel übertragen
for zeile := 1
to 13
do
begin
for spalte := 1
to 5
do
begin
Excel.Cells[zeile, spalte].Value := Tabelle.cells[spalte-1,zeile-1];
end;
end;
Excel.Visible := true;
// Diagramm erstellen
Diagramm1:= Excel.Charts.Add;
Diagramm1.Activate;
Diagramm1.ChartType:= xlColumnClustered;
// Diagrammtype
// Datenbereich
Diagramm1.SetSourceData (Source:= Excel.WorkSheets['
Tabelle1'].Range['
A1:E13'],
PlotBy:= xlColumns);
// Diagramm im selben Tabellenblatt wie die Datentabelle.
Diagramm1.Location (Where:= xlLocationAsObject,
Name:= '
Tabelle1');
// Diagrammbeschriftung
// Sicherstellen das die Titel eingeblendet sind
// Danach die Formatierungen durchführen
Excel.Worksheets[1].ChartObjects[1].Chart.HasTitle:= True;
// Diagrammtitel Test
Excel.Worksheets[1].ChartObjects[1].Chart.ChartTitle
.Characters.Text:= '
Verkaufszahlen bis 2007';
// Diagrammtitel Schriftfarbe
Excel.Worksheets[1].ChartObjects[1].Chart.ChartTitle
.Font.Color:= clRed;
// Delphi-Farbe
// Diagrammtitel Untergrundfarbe
Excel.Worksheets[1].ChartObjects[1].Chart.ChartTitle
.Interior.Color:= clAqua;
// Delphi-Farbe
Excel.Worksheets[1].ChartObjects[1].Chart.HasAxis(xlCategory):= True;
Excel.Worksheets[1].ChartObjects[1].Chart.Axes(xlCategory).TickLabels.
Font.Color:= clRed;
Excel.Worksheets[1].ChartObjects[1].Chart.Axes(xlValue).HasTitle:= True;
Excel.Worksheets[1].ChartObjects[1].Chart.Axes(xlValue).AxisTitle.
Characters.Text:= '
€';
Excel.Worksheets[1].ChartObjects[1].Chart.Axes(xlValue).AxisTitle.
Font.Color:= clblue;
Excel.Worksheets[1].ChartObjects[1].Chart.Axes(xlValue).AxisTitle.
Font.Size:= 12;
// Excel.Worksheets[1].Activate;
Excel.Worksheets[1].Cells[1,1].Activate;
ShowMessage('
Test');
Diagramm1:= Unassigned;
Excel.ActiveWorkBook.Saved := True;
// ohne Nachfragen
Excel.Workbooks.Close;
Excel.Quit;
Excel:= Unassigned;
end;
end.