AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Diagramm in Excel erzeugen

Ein Thema von Hermann85 · begonnen am 20. Mär 2008 · letzter Beitrag vom 28. Okt 2018
Antwort Antwort
Seite 1 von 2  1 2      
Hermann85

Registriert seit: 24. Jan 2008
Ort: Dresden
42 Beiträge
 
#1

Diagramm in Excel erzeugen

  Alt 20. Mär 2008, 13:02
Hallo,

Ich habe schon alle nötigen Tabellen in Excel erzeugt, und müsste nun daraus einige Diagramme basteln. Ich habe auch schon ein Makro aufgezeichnet und versucht das danach zu programmieren, allersings funktioniert das nicht. ich hab bestimmt noch einige Fehler drinnen, doch ich finde sie nicht. Bin auch noch nicht so erfahren. hier erst mal mein code:

Delphi-Quellcode:
 
Excel.Charts.Add;
Excel.ActiveChart.ChartType := Excel.xlXYScatterLinesNoMarkers;
Excel.ActiveChart.SetSourceData := Excel.Sheets('fcd_teil.gpx1').Range('A1:H84');
Excel.Caharts.PlotBy:= Excel.xlColumns;
Excel.ActiveChart.SeriesCollection.NewSeries;
Excel.ActiveChart.SeriesCollection.NewSeries;
Excel.ActiveChart.SeriesCollection(1).XValues := '=fcd_teil.gpx1!R2C4:R83C4';
Excel.ActiveChart.SeriesCollection(1).Values := '=fcd_teil.gpx1!R2C6:R83C6';
Excel.ActiveChart.SeriesCollection(1).Name := '=""Sued""';
Excel.ActiveChart.SeriesCollection(2).XValues := '=fcd_teil.gpx1!R2C13:R83C13';
Excel.ActiveChart.SeriesCollection(2).Values := '=fcd_teil.gpx1!R2C15:R83C15';
Excel.ActiveChart.SeriesCollection(2).Name := '=""Nord""';
Excel.ActiveChart.Location :=Excel.xlLocationAsNewSheet;
Er scheint schon Probleme mit dem Typ zu haben, ich hab aber keine Ahnung, wie ich es sonst noch schreiben könnte.

Ich hoffe mir kann einer helfen.
Danke schon mal im Vorraus

lg Hermann
  Mit Zitat antworten Zitat
Hermann85

Registriert seit: 24. Jan 2008
Ort: Dresden
42 Beiträge
 
#2

Re: Diagramm in Excel erzeugen

  Alt 20. Mär 2008, 16:24
hab es jetzt soweit hinbekommen, dass es mir schon mal ein Diagramm anzeigt, allerdings liegt gleich das nächste problem vor. mein code hat sich nicht sonderlich geändert. naja...hier isser trotzdem:

[delphi]
Excel.Charts.Add;
Excel.ActiveChart.ChartType := xlXYScatterLinesNoMarkers;
Excel.ActiveChart.SeriesCollection.NewSeries;
Excel.ActiveChart.SeriesCollection.NewSeries;
Excel.ActiveChart.SeriesCollection(1).XValues := '=fcd_teil.gpx1!R2C4:R' + IntToStr(SheetRowCount) + 'C4';
Excel.ActiveChart.SeriesCollection(1).Values := '=fcd_teil.gpx1!R2C6:R' + IntToStr(SheetRowCount) + 'C6';
Excel.ActiveChart.SeriesCollection(1).Name := '=""Reiszeit Sued""';
Excel.ActiveChart.SeriesCollection(2).XValues := '=fcd_teil.gpx1!R2C13:R' + IntToStr(SheetRowCount) + 'C13';
Excel.ActiveChart.SeriesCollection(2).Values := '=fcd_teil.gpx1!R2C15:R' + IntToStr(SheetRowCount) + 'C15';
Excel.ActiveChart.SeriesCollection(2).Name := '=""Reisezeit Nord""';
Excel.ActiveChart.Location := xlLocationAsNewSheet;

jetzt hängt er in zeile 5 fest.
Die Fehlermeldung lautet : "Die XValues-Eigenschaft des Series-Objektes kann nicht festgelegt werden "
hab mich noch bisl im netz umgschaut und herausgefunden, dass der Tabellenname in Hochkommata stehen muss. Das geht in Delphi aber nicht, da ja dadurch der String beendet wird. Hat vlt jemand ne idee, wie ich das lösen könnte??

grüße Hermann
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Diagramm in Excel erzeugen

  Alt 20. Mär 2008, 16:38
Hi,

das Hochkomma innerhalb eines Delphi String-Literals musst du verdoppeln.

Grüße vom marabu
  Mit Zitat antworten Zitat
Hermann85

Registriert seit: 24. Jan 2008
Ort: Dresden
42 Beiträge
 
#4

Re: Diagramm in Excel erzeugen

  Alt 20. Mär 2008, 17:00
Hey dankeschön...war anscheinend doch nicht mein problem...es geht immer noch nicht...naja...ich mach jetzt erst mal feierabend und grübel nächste woche weiter

frohe ostern

grüße Hermann
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker
Online

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

Re: Diagramm in Excel erzeugen

  Alt 29. Mär 2008, 01: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
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Diagramm in Excel erzeugen

  Alt 29. Mär 2008, 01:23
Excel.ActiveChart.SeriesCollection.NewSeries liefert doch ein Objekt zurück und mit diesem muss man weiterarbeiten:
Delphi-Quellcode:
var
  serie : OleVariant;
begin
  serie := Excel.ActiveChart.SeriesCollection.NewSeries;
  serie.XValues := ....
  Mit Zitat antworten Zitat
Hermann85

Registriert seit: 24. Jan 2008
Ort: Dresden
42 Beiträge
 
#7

Re: Diagramm in Excel erzeugen

  Alt 31. Mär 2008, 10:13
Hallo,

Ich hatte mein Diagramm dann doch noch hinbekommen...nach ewiger Sucherei hab ich herausgefunden, dass man bei der Quellangabe Z statt R und S statt C schreiben muss (da muss erst ma einer drauf kommen) naja...bei mir siehts jetz so aus :

Delphi-Quellcode:
  
Excel.Charts.Add;
Excel.ActiveChart.ChartType := xlXYScatterLinesNoMarkers;
Excel.ActiveChart.SeriesCollection(1).XValues := '=''Sued_Ost''!Z2S4:Z'+IntToStr(ZelleSued_Ost)+'S4';
Excel.ActiveChart.SeriesCollection(1).Values := '=''Sued_Ost''!Z2S6:Z'+IntToStr(ZelleSued_Ost)+'S6';
Excel.ActiveChart.SeriesCollection.NewSeries;
Excel.ActiveChart.SeriesCollection(2).XValues := '=''Nord_West''!Z2S4:Z'+IntToStr(ZelleNord_West)+'S4';
Excel.ActiveChart.SeriesCollection(2).Values := '=''Nord_West''!Z2S6:Z'+IntToStr(ZelleNord_West)+'S6';
Excel.ActiveChart.HasTitle := True;
Excel.ActiveChart.ChartTitle.Characters.Text := 'Reisezeiten';
Excel.ActiveChart.Axes(xlCategory, xlPrimary).HasTitle := True;
Excel.ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text := 'Uhrzeit';
Excel.ActiveChart.Axes(xlValue, xlPrimary).HasTitle := True;
Excel.ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text := 'Dauer in sec';
Excel.Sheets[1].Name := 'Diagramm Reisezeiten';
trotzdem danke für die hilfe

grüße Hermann
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker
Online

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

Re: Diagramm in Excel erzeugen

  Alt 31. Mär 2008, 23:23
Hallo Hermann85,

das Z steht für Zeile in Deutsch, R steht für Row in Englisch;
das S steht für Spalte in Deutsch, C steht für Column in Englisch;

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

Registriert seit: 24. Jan 2008
Ort: Dresden
42 Beiträge
 
#9

Re: Diagramm in Excel erzeugen

  Alt 1. Apr 2008, 09:09
Hallo Chemiker,
das hatte ich mir eigentlich schon denken können...mein problem war eher, dass ich nicht wusst, wieso man auf einmal Z und S nehmen musste.
Die ganze Zeit war R und C gefordert und auf einmal Z und S im Diagramm, obwohl auch im Makro R und C verwendet wurde.
Dafür hab ich keine wirklich logische Erklärung.
Grüße Hermann
  Mit Zitat antworten Zitat
RickHill

Registriert seit: 13. Feb 2010
2 Beiträge
 
Delphi 6 Professional
 
#10

Re: Diagramm in Excel erzeugen

  Alt 13. Feb 2010, 13:12
Hallo Chemiker,

Die folgende Zeile wird nicht in Office Excel 2007 akseptiert.
Was ist hier falsch?


Delphi-Quellcode:

  Excel.Worksheets[1].ChartObjects[1].Chart.Axes(xlValue).HasTitle:= True;
Rick
(Dutch delphi user)
Rick Hill
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:13 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