AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Excel fernsteuerun mit OLE: TExcelChart Objekt
Thema durchsuchen
Ansicht
Themen-Optionen

Excel fernsteuerun mit OLE: TExcelChart Objekt

Ein Thema von RoMe87 · begonnen am 3. Nov 2009 · letzter Beitrag vom 25. Nov 2009
 
Benutzerbild von Chemiker
Chemiker

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

Re: Excel fernsteuerun mit OLE: TExcelChart Objekt

  Alt 7. Nov 2009, 23:34
Hallo RoME87,

ich habe Dir mal ein minimales Beispiel zusammen geschrieben.
Das ist eigentlich nur den VBA-Macro in Delphi umgesetzt.

Die Unit comobj wird für die OLE-Automation gebraucht, die Unit ExcelXP wird eingebunden für die Konstanten von Excel (im Beispiel für xlColumnClustered)

Delphi-Quellcode:
unit MainExcel_Tabelle_Diagramm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, comobj, ExcelXP;

type
  TForm1 = class(TForm)
    SG: TStringGrid;
    btDatenNachExcel: TButton;
    btStringGridMitDatenFuellen: TButton;
    procedure btStringGridMitDatenFuellenClick(Sender: TObject);
    procedure btDatenNachExcelClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    vEXCEL: OLEVariant;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btDatenNachExcelClick(Sender: TObject);
var
  z, s: integer;
begin
  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 sg.RowCount do
  begin
    for s := 1 to sg.ColCount do
    begin
      vExcel.cells[z, s].Value2 := SG.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;
  // Diagrammtype auswählen
  vExcel.Charts[1].ChartType:= xlColumnClustered;
  // Die Diagrammseite einen Namen geben
  vExcel.Charts[1].Name := 'Test Diagramm';
  // Aufräumen
  ShowMessage('Excel wird jetzt geschlossen');
  vExcel.ActiveWorkbook.Save;
  vExcel.Quit;
  vExcel:= Unassigned;
end;

procedure TForm1.btStringGridMitDatenFuellenClick(Sender: TObject);
begin
  with SG 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;
end;

end.

Vielleicht Hilft Dir das weiter.
Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
 


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 18: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