AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Diagramm in Excel erzeugen

Ein Thema von Hermann85 · begonnen am 20. Mär 2008 · letzter Beitrag vom 28. Okt 2018
 
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Diagramm in Excel erzeugen

  Alt 29. Mär 2008, 00:01
Hallo Hermann85,

bis Du mit Deinen Diagrammen weiter gekommen?

Wenn nicht, dann hilft Dir vielleicht dieser Quell-Code weiter:

Delphi-Quellcode:
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.
Bemerkung: In einem StringGrid in Delphi werden Zufalls-Verkaufszahlen erstellt. (damit man was zum Spielen hat). Diese Verkaufszahlen werden nach Excel übertragen und anschließend daraus ein Diagramm erstellt. Das Diagramm wird in dem gleichen Tabellenblatt wie die Verkaufszahlen erstellt. Dann sind noch einige Diagrammelemente formatiert worden. Das Thema Diagramme formatieren in Excel ist schier unerschöpflich (Makos helfen da weiter).

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz