Thread Win32::OLE (3 answers)
Opened by Ostahos at 2006-01-26 19:30

Ostahos
 2006-01-26 19:30
#45203 #45203
User since
2006-01-26
2 Artikel
BenutzerIn
[default_avatar]
Zusammenfassung meines Problemes:
Suche gute Doku &| Beispiele betreffend:
Win32::OLE

Ich möchte dynamisch die Quelle eines Diagrammes ändern, und muss daher auf die Range eines bestehenden Diagrammes zugreifen, und finde die Zugriffshierachie nicht!


--------------------------------------------------------
Langversion
Ich möchte mittels Perl & der OLE Schnittstelle die Quellen eines existierenden Diagrammes ändenr, nur weiß ich nicht, wie ich den Pfad zum Diagramm finde?!?

Ich erzeuge das .xls File mit:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
##################################################################
#Erstellen der Datei
##################################################################
use strict;
use Win32::OLE;
use Win32::OLE::Const 'Microsoft Excel';

my $Excel = Win32::OLE->new("Excel.Application");
$Excel->{Visible} = 1;

my $Book = $Excel->Workbooks->Add;
my $Sheet = $Book->Worksheets(1);
my $Range = $Sheet->Range("A2:C7");
$Range->{Value} =
[['Delivered', 'En route', 'To be shipped'],
[504, 102, 86],
[670, 150, 174],
[891, 261, 201],
[1274, 471, 321],
[1563, 536, 241]];

my $Chart = $Excel->Charts->Add;
$Chart->{ChartType} = xlAreaStacked;
$Chart->SetSourceData({Source => $Range, PlotBy => xlColumns});
$Chart->{HasTitle} = 1;
$Chart->ChartTitle->{Text} = "Items delivered, en route and to be shipped";
##################################################################

Nun füg ein 2. Skript periodisch Werte hinzu , was auch problemlos funktioniert.
Nur möche ich, dass das Diagramm immer die letzten z.B. 5 Werte darstellt, daher muss ich die Diagrammquellen mit ändern


Ich habe folgenden Ansatz:
Code: (dl )
1
2
3
4
my $Chart = $Excel->Charts->???????? 
#weil ich kann nicht add verwenden da ich damit ja ein neues erzeugen würde
$Chart->SetSourceData({Source => $Range, PlotBy => xlColumns});
#$Range, immer auf den richtigen Wert ändern und es würde funktionieren.

Nur wie kann ich das Chart auslesen????


Soweit so klar, was mein Problem ist??????

View full thread Win32::OLE