![]() |
Excel Tabellen in Delphi
Hi Leute !
Ich würde gerne mit Hilfe von Delphi eine Excel-Anwendung öffnen und in dieser ein Diagramm erzeugen. Das Öffnen einer Excel-Applikation und das Eintragen von Daten in Felder ist mir schon gelungen (hat ne Weile gedauert), aber ich schaffe es nicht ein Diagramm zu erzeugen! In der Delphi-Hilfe stehen die Befehle für eine Excel-Applikation nicht. Programmtext bisher:
Delphi-Quellcode:
Nun sollen in der anwendung die Felder (1,1) bis (zeile,4) in einem Diagramm vom Typ "Linie" (standard) dargestellt werden.
procedure TForm1.Button6Click(Sender: TObject);
var Excel : Variant; gridzei,zeile,spalte: longint; begin gridzei := 1; zeile:=2; spalte:=1; try Excel := CreateOleObject('Excel.Application'); Excel.Visible := False; Excel.Workbooks.add; except ShowMessage('Excel konnte nicht gestartet werden !'); exit; end; //Beschriftungen für die Erste Zeile Excel.Cells[1,1].value := 'U1'; Excel.Cells[1,2].value := 'U2'; Excel.Cells[1,3].value := 'V1'; Excel.Cells[1,4].value := 'V2'; Excel.Cells.Select; Excel.Selection.Columnwidth:=7; try while gridzei <> x do begin //Eintragen der Werte Excel.Cells[zeile,spalte].value := Wert1[x]; Excel.Cells[zeile,spalte+1].value := Wert2[x]; Excel.Cells[zeile,spalte+2].value := Wert3[x]; Excel.Cells[zeile,spalte+3].value := Wert4[x]; zeile := zeile+1; gridzei := gridzei+1; inc(x); end; Showmessage('Excel-Export beendet !' +#13+'Total exportierte Daten : ' + IntToStr(gridzei)); Zeile:= 2; Spalte:= 1; Excel.visible:=true; except Showmessage('Fehler beim Excel-Export ! Abgebrochen...'); end; end; Wisst ihr wie ich das hinkriegen kann? Ach ja... Immer wenn ich eine Excel Anwendung so in Delphi aufrufe kriege ich beim Herunterfahren des PCs eine Fehlermeldung "MappeX hat einen Fehler verursacht". Muss ich eine Excel Applikation nach Benutzung schliessen? Wenn ja, wie kriege ich das hin ? Danke schonmal :D |
Re: Excel Tabellen in Delphi
Hallo,
die nötigen Excelmethoden erhälts Du wenn Du ein Makro auf zeichnest
Code:
Die gilt es jetzt mit Delphi nachzubilden. Das Excelobjektmodell ist in der Datei VBAXL10.CHM (die Nummern kann je nach Excel-Version variieren) sehr gut beschrieben.
Sub Makro1()
' ' Makro1 Makro ' Makro am 29.10.2006 von Jens Schumann aufgezeichnet ' ' Range("E8:H9").Select Charts.Add ActiveChart.ChartType = xlLine ActiveChart.SetSourceData Source:=Sheets("Tabelle1").Range("E8:H9") ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1" End Sub |
Re: Excel Tabellen in Delphi
Hmm.. Was ist denn die Lücke zwischen Sourcedata und source?
Da sagter mir ein Operator fehlt ;) Soll es in der Art aussehen?
Delphi-Quellcode:
Hmm.. nein, kann nicht sein... in der Zeile
s:='A1:D'+inttostr(Zeile);
Excel.Charts.Add; Excel.Activechart.Charttype:=xlLine; Excel.ActiveChart.SetSourcedata; Excel.Activechart.Source:=Excel.Range(s); Excel.ActiveChart.SetSourcedata; kriege ich nen Abbruch "Ungültige Parameterzahl" und in der nächsten "Mitglied nicht gefunden"... Mit der Zeile Excel.ActiveChart.SetSourcedata Source:=Excel.Sheets('Tabelle1').Range(s); Sagt er an Dieser Stelle:................^ "Missing Operator or semikolon" Würde es mir helfen, wenn ich wüsste, was ein Makro ist?^^ :roll: |
Re: Excel Tabellen in Delphi
Hallo,
ich habe keine Ahnung von Excel über Delphi (habe aber ein paar Makros selbst bearbeitet). Könnte es an falschen Schreibweisen liegen: Zitat:
Zitat:
![]() Gruß Jürgen |
Re: Excel Tabellen in Delphi
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Ich habe mal versucht mit den Serverkomponenten ein Beispiel zu basteln (ich verwende gundsätzlich die frühe Bindung)
Delphi-Quellcode:
Warum es zu der Zugriffsverletzung kommt weiss ich noch nicht.
procedure TForm1.GenerateChart;
var Cells : ExcelRange; DataRange : ExcelRange; ExcelChart : ChartObject; Chart : _Chart; begin OpenExcel; Try ExcelApplication.Workbooks.Add(EmptyParam,FLCID); ExcelWorkbook.ConnectTo(ExcelApplication.ActiveWorkBook); ExcelWorksheet.ConnectTo(ExcelWorkbook.Sheets[1] as ExcelXP._WorkSheet); ExcelChart:=(ExcelWorkSheet.ChartObjects as ChartObjects).Add(20,20,200,200); ExcelChart.Name:='Chart1'; Chart:=ExcelChart.Chart; Cells:=ExcelWorksheet.Cells; Cells.Item[1,1]:='U1'; Cells.Item[1,2]:='U2'; Cells.Item[1,3]:='V1'; Cells.Item[1,4]:='V2'; Cells.Item[2,1]:='1'; Cells.Item[2,2]:='2'; Cells.Item[2,3]:='3'; Cells.Item[2,4]:='4'; DataRange:=Cells.Range['A1','D2']; Chart.SetSourceData(DataRange,xlRows); // Hier gibt es eine Zugriffsverletzung // ExcelChart.Chart.ChartType:=xlLine; // Jetzt das Ergebnis speichern ExcelWorkbook.SaveAs('c:\test.xls',EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, xlNoChange, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, FLCID); Finally CloseExcel; end; end; |
Re: Excel Tabellen in Delphi
Funktioniert leider auch nicht..
Delphi-Quellcode:
führt in der letzten Zeile zu einem "OLE ---" Error, undExcel.Charts.Add; Excel.Activechart.Charttype:=xlLine; Excel.ActiveChart.SetSourcedata(Excel.Cells.Range['A1','D'+inttostr(Zeile)]);
Delphi-Quellcode:
zu einem "Typkonflikt".
Excel.ActiveChart.SetSourcedata(['A1','D'+inttostr(Zeile)]);
Ich habe versucht eine "ExcelRange" festzulegen, aber der kennt die Variable nicht. Genausowenig wie CloseExcel. Fehlt mit eine lib? |
Re: Excel Tabellen in Delphi
Hmm.. zwar miserable automatische überstzung, aber vielleicht liegts ja an SP 2...
Hier ist mal ein ![]() Ich verstehe das so: Ich soll REGSVR32 OLEPRO32.DLL ausführen, dann dürfte der Fehler nicht mehr auftreten. Nach anderen Foreneinträgen hat es bei betreffenden Personen so funktioniert:
Delphi-Quellcode:
Bei mir leider noch immer nicht!
Excel.ActiveChart.SetSourcedata(Excel.Range['A1:D2'],xlColumns);
Imemrnoch OLE error achthundertnochwas... :wall: |
Re: Excel Tabellen in Delphi
Hat sich auf dieser Front in den letzten 3 Jahren noch was getan?
Stehe vor dem gleichen Problem. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 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