User since
2006-05-09
76
Artikel
BenutzerIn
hi community,
ich möchte scriptgesteuert einige (torten-)diagramme mit excel erstellen und diese dann als gif speichern
das funktioniert so weit auch ganz gut
nur wie kann ich excel dazu bringen, die werte mit ins diagramm zu übernehmen?
mein code erzeugt nur diagramme ohne zahlen...
und kann man ein erzeugtes diagramm skalieren, bzw. kann man dessen grösse voreinstellen?
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use strict;
use warnings;
use File::Spec;
use Cwd;
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Excel';
$Win32::OLE::Warn = 3; # die on errors
my $excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application');
$excel->{Visible} = 0;
my $xls = File::Spec->catfile(cwd(), 'tmp.xls');
my $book2 = $excel->Workbooks->Open($xls);
my $sheet2 = $book2->Worksheets(1);
my @keys = ('a', 'b', 'c', 'd', 'e', 'f', 'g');
my @vals = (12, 23, 42, 13, 2, 33, 44);
my $title = qq(diagram1);
make_chart($title, \@keys, \@vals);
$book2->Close(0);
$excel->Quit();
sub make_chart($$$)
{
my ($title, $key, $val) = @_;
my $range = $sheet2->Range("A1:G2");
$range->{Value} = [$key, $val];
my $chart = $excel->Charts->Add;
$chart->{ChartType} = xlPie;
$chart->SetSourceData( { Source => $range, PlotBy => xlRows } );
$chart->{HasTitle} = 1;
$chart->ChartTitle->{Text} = $title;
# ???
# $chart->ApplyDataLabels->{ShowValue};
$chart->Location( { Where => xlLocationAsObject, Name => "Tabelle2" } ); #$sheet2->{Name});
$chart = $excel->ActiveChart;
my $file = File::Spec->catfile(cwd(), $title.qq(.gif));
$chart->Export($file, "GIF", 0);
}
User since
2003-08-04
14371
Artikel
ModeratorIn
Ich kenne mich zugegebenermaßen nicht so gut damit aus, aber vielleicht probierst Du mal verschiedene Sachen, die in diesen Links verwendet werden:
http://support.microsoft.com/default.aspx?scid=kb%3Bde%3B214797
User since
2006-05-09
76
Artikel
BenutzerIn
danke für den tip, aber so richtig weiter bringt mich das leider auch nicht... ich werde mal versuchen, das irgendwie in excel mit einem vb-makro zu machen und dieses dann aus dem script aufzurufen...!?! wenn jemand irgendwelche erfahrungen mit sowas hat, ich bin um jede anregung dankbar...
um himmels willen... es ist freitag abend, was mach' ich eigentlich noch hier... ;)
User since
2004-03-22
5697
Artikel
ModeratorIn + EditorIn
schau mal unter perl.com der aktuelle artikel erzählt von diagrammen mit perl leicht gemacht und für den excell teil gibts doch extra module dafür im
excel
User since
2006-05-09
76
Artikel
BenutzerIn
@lichtkind
die excel module sind für mich nicht wirklich brauchbar...
aber durch den von dir erwähnten artikel bin ich auf das modul chart gestossen und das sieht auf den ersten blick echt klasse aus und ist auch gut dokumentiert (im gegensatz zu dem dem ganzen excel-kram) :-)
die diagramme sind zwar optisch nicht so ansprechend, wie die in excel, aber es gibt schlimmeres ;-)
ich werde mal es auf jeden fall mal testen
tausend dank
oje, jetzt ist's schon samstag und ich bin ja immer noch da ;-)
User since
2006-05-09
76
Artikel
BenutzerIn
...und das mit den board-icons schau ich mir bei gelegenheit auch mal noch näher an ;)
User since
2004-03-22
5697
Artikel
ModeratorIn + EditorIn
habe mal im vorigen workshop vortrag über ein "simple" excel modul gehört mit dem der vortragende gute erfahrung macht. konnte es aber in der liste eindeutig finden. simplewriter?
User since
2003-08-04
14371
Artikel
ModeratorIn
Weder
Spreadsheet::WriteExcel noch
Spreadsheet::SimpleExcel können Diagramme zeichnen. Das muss man mit
Win32::OLE machen...
Man kann bei
Spreadsheet::WriteExcel nur extern generierte Charts einbinden...
User since
2004-03-22
5697
Artikel
ModeratorIn + EditorIn
ja schon aber ich miente eher das man diese module für schritt 1 braucht: daten sammeln
User since
2006-05-09
76
Artikel
BenutzerIn
ich muss die daten nicht aus excel auslesen, sondern nach dem extrahieren aus verschiedenen logs in excel eintragen... das eintragen und das prinzipielle erzeugen der diagramme funktioniert so weit auch.
mein einziges problem ist ja lediglich, excel dazu zu bringen, die für die diagramme zugrundeliegenden daten mit in das diagramm zu übernehmen, so dass man nicht nur die eigentliche tortengrafik sieht, sondern eben auch die werte.
aber ich habe mittlerweile einen, wenn auch etwas unschönen weg gefunden. da die anzahl an werten für ein diagramm immer gleich bleibt, habe ich mir eine zusätzliche excel-datei von hand angelegt, mit einem dummy-datensatz gefüllt und daraus ein diagramm erzeugt, so wie es aussehen soll (in excel selbst funktionierts ja). jetzt werden die datensätze vom script zuerst in die eigentliche tabelle eingetragen und danach jeder einzelne dieser datensätze in die andere tabelle in die zellen des dummy-datensatzes. das diagramm aktualisiert sich und ich kann es exportieren.
so habe ich zwar eine zusätzliche excel datei zur reinen diagrammerzeugung, die nur aus einem datensatz besteht, aber eine andere lösung habe ich bisher leider nicht gefunden. :(
trotzdem danke für eure hilfe