AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Chart in Excel zeichnen: XLChartType einstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Chart in Excel zeichnen: XLChartType einstellen

Ein Thema von messie · begonnen am 31. Mai 2018 · letzter Beitrag vom 5. Jun 2018
Antwort Antwort
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#1

Chart in Excel zeichnen: XLChartType einstellen

  Alt 31. Mai 2018, 09:43
Moin,

ich schreibe mal wieder etwas code und möchte beim Füllen eine Excel-Datei einen Chart zeichnen. Der lässt sich auch zeichnen, allerdings bekomme ich den ChartType nicht eingestellt.
Code:
var
sheet, localchart : OleVariant;

begin
  sheet := Workbook.Sheets.Add(After := Workbook.Sheets[workbook.Sheets.Count]);
  localchart := sheet.ChartObjects.Add (200,200,500,500);
  localchart.Chart.ChartWizard (sheet.Range['A5:E50'],XLChartType.xlLineMarkers); //Compiler sagt: Undeklarierter Bezeichner: XLChartType
end;
Wenn ich den Chartwizard ohne XLChartType aufrufe funktioniert es. Da bekomme ich aber ein Säulendiagramm...
Wir stelle ich denn den ChartType korrekt ein?
Delphi 2009 / Office 2013

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

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

AW: Chart in Excel zeichnen: XLChartType einstellen

  Alt 31. Mai 2018, 21:04
Hallo messie,

die Säulendiagramme sind Standard, wenn kein Diagrammtype angegeben wird.

XLChartType ist eigentlich der Überbegriff für die Diagrammtypen-Konstanten.

Um einen bestimmten Diagrammtype zu ändern:

Gallery := xlLineMarkers

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

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: Chart in Excel zeichnen: XLChartType einstellen

  Alt 1. Jun 2018, 09:38
Oder die Notlösung die fast immer hilft: Den Wert der Konstanten in der Excel-Hilfe nachlesen und dann in Delphi einbauen, also:

const xlLineMarkers=65;
Ralph
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Chart in Excel zeichnen: XLChartType einstellen

  Alt 1. Jun 2018, 19:00
Oder die Notlösung die fast immer hilft: Den Wert der Konstanten in der Excel-Hilfe nachlesen und dann in Delphi einbauen, also:

const xlLineMarkers=65;
Danke, genau das war das Problem. Die Enumeration scheint nicht umgesetzt zu sein. Mit Angabe der Werte hat es erstmal geklappt.
Die andere Notlösung (Aufzeichnen und Auswerten von Makros) klappt in Bezug auf den Chartwizard nicht mehr, der wurde ja mit Excel 2007 abgeschafft.
Ich hoffe, jetzt weiterzukommen, indem ich in die erzeugte Datei Excel-Makros nachrüste.

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

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

AW: Chart in Excel zeichnen: XLChartType einstellen

  Alt 2. Jun 2018, 16:44
Hallo messie,

der Chartwizard funktioniert in Excel 2007 als auch in Excel 2016. Nicht die Konstante ist das Problem, sondern der Aufruf der Methode.

…..ChartWizard (Gallery := xlLineMarkers);

oder

…..ChartWizard (Gallery := 65);

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

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Chart in Excel zeichnen: XLChartType einstellen

  Alt 3. Jun 2018, 11:13
Hallo messie,

der Chartwizard funktioniert in Excel 2007 als auch in Excel 2016. Nicht die Konstante ist das Problem, sondern der Aufruf der Methode.

…..ChartWizard (Gallery := xlLineMarkers);

oder

…..ChartWizard (Gallery := 65);

Bis bald Chemiker
Hm,

ging bei mir nicht, nur mit integer-Übergabe. Welchem Objekt ordnest Du denn den Chartwizard zu? Vielleicht habe ich da ein anderes?
Bzw. kann ich noch andere units über uses einbinden?

Grüße, Messie
  Mit Zitat antworten Zitat
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
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#8

AW: Chart in Excel zeichnen: XLChartType einstellen

  Alt 4. Jun 2018, 10:59
Hallo Chemiker,
und Danke für das Beispiel

Es erzeugt bei mir dasselbe Problem:
Zitat:
[DCC Warnung] Unit8.pas(7): W1006 Unit 'OleAuto' ist veraltet
[DCC Fehler] Unit8.pas(81): E2003 Undeklarierter Bezeichner: 'xlLineStacked'
[DCC Fehler] Unit8.pas(86): E2003 Undeklarierter Bezeichner: 'xlXYScatter'
[DCC Fataler Fehler] Project9.dpr(5): F2063 Verwendete Unit 'Unit8.pas' kann nicht compiliert werden
Wegen der Warnung habe ich nach anderen Units gefragt. Evtl. habe ich da ein Codebeispiel aus D6 genommen was nicht mehr richtig läuft.

Was ich übrigens auch nicht hinbekomme, ist beim XYScatter die erste Spalte als X und die zweite als Y zu verwenden. Der GUI-Wizard machte das meiner Meinung nach automatisch, wenn man ihm zwei Spalten anbot.

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

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

AW: Chart in Excel zeichnen: XLChartType einstellen

  Alt 4. Jun 2018, 22:02
Hallo messie,

ich habe grade die Procedure in Delphi 2006 mit Excel 2007 in Vista ausprobiert, und die Procedure funktioniert ohne Probleme.

Vielleicht liegt es daran das nicht die richtigen Unit’s eingebunden werden.
Delphi 2006 als auch Delphi Berlin:

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, comobj, ExcelXP;
Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#10

AW: Chart in Excel zeichnen: XLChartType einstellen

  Alt 5. Jun 2018, 13:39
Moin,

die ExcelXP war es. Danke!

Grüße, Messie
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz