Thread Diagramme in Excel (9 answers)
Opened by bo at 2006-05-19 19:03

bo
 2006-05-19 19:03
#66303 #66303
User since
2006-05-09
76 Artikel
BenutzerIn
[default_avatar]
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?

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
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);
}

View full thread Diagramme in Excel