Einzelnen Beitrag anzeigen

Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Chart in Excel zeichnen: XLChartType einstellen

  Alt 3. Jun 2018, 19:27
Hallo messie,

ein Beispiel:


Die Daten werden zuerst in einem StringGrid eintragen, anschließend in einem Excel-Sheet übertragen. Danach werden diese Daten in einem Diagramm angezeigt.
Mit ChartWizard werden die Daten dann in einer anderen Datentype in Excel geändert.

Delphi-Quellcode:
procedure TForm1.btExcel_Dia_erstellenClick(Sender: TObject);
var
  z, s: integer;
  SG1: TStringGrid;
  vExcel: OLEVariant;
begin
  try
    SG1 := TStringGrid.Create(self);
    SG1.Parent:= self;
    SG1.Height:= 145;
    SG1.Left:= 72;
    SG1.Top:= 176;
    SG1.Width:= 145;
  // Daten in einem StrinGrid eintragen
    with SG1 Do
    begin
      Cells[0,0] := 'Umsatz';
      Cells[1,0] := 'Kosten';
      Cells[0,1] := '500';
      Cells[0,2] := '400';
      Cells[0,3] := '300';
      Cells[0,4] := '800';
      Cells[1,1] := '300';
      Cells[1,2] := '500';
      Cells[1,3] := '900';
      Cells[1,4] := '700';
    end;
  // Excel starten
  try
    vExcel := CreateOleObject('Excel.Application');
  except
    ShowMessage('Excel konnte nicht gestartet werden!');
    Exit;
  end;
  vExcel.Visible := TRUE;
  vExcel.Application.Caption:= 'Demo für Diagramm Erstellung';
  vExcel.WorkBooks.Add;
  vExcel.WorkSheets[1].Name := 'Tabelle mit Daten';
  // Ab hier werden die Daten von StringGrid nach Excel exportiert.
  // Zu beachten ist das die erste Zeile/Spalte im StringGrid = 0 ist und
  // bei Excel =1
  for z := 1 to SG1.RowCount do
  begin
    for s := 1 to SG1.ColCount do
    begin
      vExcel.cells[z, s].Value2 := SG1.Cells[s-1, z-1];
    end;
  end;
  // Werte Tabelle in Excel markieren
  vExcel.ActiveWorkbook.WorkSheets['Tabelle mit Daten'].Range['A1:B5'].Select;
  // Neue Diagramm-Seite anlegen
  vExcel.Charts.Add;
  // Die Diagrammseite einen Namen geben
  vExcel.Charts[1].Name := 'Test Diagramm';
  // Diagrammtype auswählen
  vExcel.Charts[1].ChartType:= xlLineStacked;

  ShowMessage('Diagramm anzeigen');

  // Einen neuen Diagrammtype auswählen
  vExcel.Charts[1].ChartWizard (Gallery:= xlXYScatter);

  ShowMessage('Die Daten in einem anderen Diagramm anzeigen');

  vExcel.ActiveWorkbook.Saved:= TRUE;
  vExcel.ActiveWorkbook.Close;
  vExcel.Quit;
  vExcel:= Unassigned;
  finally
    SG1.Free;
  end;
end;


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