Excel 可以从数组元素调用方法吗?

Excel 可以从数组元素调用方法吗?,excel,perl,xlsx,Excel,Perl,Xlsx,我有以下代码: my $workbook = Excel::Writer::XLSX->new( 'a_simple.xlsx' ); my $worksheet = $workbook->add_worksheet(); my @chart_performance1 = $workbook->add_chart( type => 'column', embedded => 1 ); my $no_of_titles = 3; for ( my $no_of =

我有以下代码:

my $workbook  = Excel::Writer::XLSX->new( 'a_simple.xlsx' );
my $worksheet = $workbook->add_worksheet();
my @chart_performance1 = $workbook->add_chart( type => 'column', embedded => 1 );
my $no_of_titles = 3;

for ( my $no_of = 0; $no_of < $no_of_titles; $no_of++ ) {
    $chart_performance1[ $no_of ]->add_series(
        name       => $chart_heading[ 0 ],
        categories => [ 'Sheet1', $array_game_titles[ $no_of ] , $row_range_max , 0, 0 ],
        values     => [ 'Sheet1', $array_game_titles[ $no_of ] , $row_range_max , 1, 1 ],
    );
}
为什么?

这一行

my @chart_performance1 = $workbook->add_chart( type => 'column', embedded => 1 );
看起来不对。add_chart方法返回单个Excel::Writer::XLSX::chart对象,因此结果通常分配给标量,而不是数组。不清楚您的要求是什么,但如果您试图创建一个图表来绘制三个系列的数据,那么您需要的更像:

my $chart = $workbook->add_chart( type => 'column', embedded => 1 );
...
for ( my $no_of = 0; $no_of < $no_of_titles; $no_of++ ) {
    $chart->add_series( ... );
}

得到我的答案,只需要声明数组,而不需要在同一实例中使用add\u chart方法声明和定义数组图表的性能。当add_chart方法返回单个对象时,我得到了错误。谢谢你的帮助

my $workbook  = Excel::Writer::XLSX->new( 'a_simple.xlsx' );
my $worksheet = $workbook->add_worksheet();
my @chart_performance;
my $no_of_titles = 3;

for ( my $no_of = 0; $no_of < $no_of_titles; $no_of++ ) {
    $chart_performance[ $no_of ] = $workbook->add_chart( type => 'column', embedded => 1);
    $chart_performance[ $no_of ]->add_series(
        name       => $chart_heading[ 0 ],
        categories => [ 'Sheet1', $array_row[ $no_of ], $array_col[ $no_of ], 0, 0 ],
        values     => [ 'Sheet1', $array_row[ $no_of ], $array_col[ $no_of ], 1, 1 ],
    );
}

你的问题是什么?我们可以用这种方式调用模块函数add_series吗。@LohitRaj当你尝试时会发生什么?阅读包含大量示例的文档。/无法在未定义的值上调用方法add_series/i收到此错误@Dr.avalanchya我试图将图表对象分配给数组,以便为不同标题的3个系列数据获取不同的图表。
my $workbook  = Excel::Writer::XLSX->new( 'a_simple.xlsx' );
my $worksheet = $workbook->add_worksheet();
my @chart_performance;
my $no_of_titles = 3;

for ( my $no_of = 0; $no_of < $no_of_titles; $no_of++ ) {
    $chart_performance[ $no_of ] = $workbook->add_chart( type => 'column', embedded => 1);
    $chart_performance[ $no_of ]->add_series(
        name       => $chart_heading[ 0 ],
        categories => [ 'Sheet1', $array_row[ $no_of ], $array_col[ $no_of ], 0, 0 ],
        values     => [ 'Sheet1', $array_row[ $no_of ], $array_col[ $no_of ], 1, 1 ],
    );
}