![]() |
Chart in Excel zeichnen: XLChartType einstellen
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:
Wenn ich den Chartwizard ohne XLChartType aufrufe funktioniert es. Da bekomme ich aber ein Säulendiagramm...
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; Wir stelle ich denn den ChartType korrekt ein? Delphi 2009 / Office 2013 Grüße, Messie |
AW: Chart in Excel zeichnen: XLChartType einstellen
Hallo messie,
die Säulendiagramme sind Standard, wenn kein Diagrammtype angegeben wird.
Delphi-Quellcode:
ist eigentlich der Überbegriff für die Diagrammtypen-Konstanten.
XLChartType
Um einen bestimmten Diagrammtype zu ändern:
Delphi-Quellcode:
Gallery := xlLineMarkers
Bis bald Chemiker |
AW: Chart in Excel zeichnen: XLChartType einstellen
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; |
AW: Chart in Excel zeichnen: XLChartType einstellen
Zitat:
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 |
AW: Chart in Excel zeichnen: XLChartType einstellen
Hallo messie,
der Chartwizard funktioniert in Excel 2007 als auch in Excel 2016. Nicht die Konstante ist das Problem, sondern der Aufruf der Methode.
Delphi-Quellcode:
…..ChartWizard (Gallery := xlLineMarkers);
oder
Delphi-Quellcode:
…..ChartWizard (Gallery := 65);
Bis bald Chemiker |
AW: Chart in Excel zeichnen: XLChartType einstellen
Zitat:
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 |
AW: Chart in Excel zeichnen: XLChartType einstellen
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 |
AW: Chart in Excel zeichnen: XLChartType einstellen
Hallo Chemiker,
und Danke für das Beispiel Es erzeugt bei mir dasselbe Problem: Zitat:
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 |
AW: Chart in Excel zeichnen: XLChartType einstellen
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:
Bis bald Chemiker
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, comobj, ExcelXP; |
AW: Chart in Excel zeichnen: XLChartType einstellen
Moin,
die ExcelXP war es. Danke! Grüße, Messie |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:28 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