Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5155[/thread]

Win32::OLE

Leser: 2


<< >> 4 Einträge, 1 Seite
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??????
renee
 2006-01-26 23:42
#45204 #45204
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Kennst Du den OLE-Browser, der bei ActivePerl (Perl von ActiveState) dabei ist?? Hier im Forum geistert auch irgendwo noch ein Skript rum, mit dem man die Funktionen herausbekommen kann. Ich suche mal...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Ostahos
 2006-01-29 00:11
#45205 #45205
User since
2006-01-26
2 Artikel
BenutzerIn
[default_avatar]
Ich hab es mit dem OLE Browser probiert, bin damit aber nicht wirklich schlau geworden!

Ich bin auch auf dem VB Weg nicht wirklich weitergekommen!
renee
 2006-01-29 02:30
#45206 #45206
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
probier mal:
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
28
29
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->{Name} = 'Chart1';
$Chart->ChartTitle->{Text} = "Items delivered, en route and to be shipped";

# Nachdem ich oben einen Namen eingefuegt habe,
# kommt hier der Teil zum Aendern des Charts
my $change = $Excel->Charts('Chart1');
$change->SetSourceData({Source => $newRange, PlotBy => xlColumns});


Ein wenig abgeguckt von: http://www.perlmonks.org/?node=153486

Aber keine Garantie, dass das wirklich funktioniert...

Crian: Schließende ']' im Code-Tag hinzugefügt =)\n\n

<!--EDIT|Crian|1138620341-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 4 Einträge, 1 Seite



View all threads created 2006-01-26 19:30.