Spreadsheet :: WriteExcel:动态用法以在同一工作表中创建图表

时间:2018-10-19 16:49:51

标签: excel perl loops charts

我实际上是从事自动化工作,以便在同一工作台中自动绘制一些曲线。

我想知道是否有人对我有用技巧来创建动态代码以使用Spreadsheet :: WriteExcel库绘制图表。

我想使用for循环在同一工作表中创建多个图表。我尝试了几种方法,但是我不知道如何声明要添加到图表中的图表,而不会每次都覆盖它。

我的代码如下:

sub ExcelGraphGen {

my ($RowMin,$RowMax,$ColMin,$ColMaxToRead,$NumOfColumnMeasured,$wbToWrite,$TableOfWsToDraw_REF,$TableOfWsToWrite_REF,$Voltage_REF,$Columns) = @_;

#For all VG Values
my @Alphabet = ("A".."ZZ");

foreach my $Voltage [3,2,1,0] {              

    for (my $i=0 ; $i< 3 ; $i++) {

        my $chart = $wbToWrite->add_chart( type => 'scatter', embedded => 1, name => "$i" );
        my $WorkSheetNameToParse = $TableOfWsToWrite{$Voltage}->get_name();
        my $WorkSheetNameToDraw = $TableOfWsToDraw{$Voltage}->get_name();

        for (my $ColToRead = $i ; $ColToRead < 9; $ColToRead = $ColToRead + 3  ) {

            $chart->add_series(
                name => "\'${WorkSheetNameToParse}\'\!\$${Alphabet[$ColToRead]}\$3",
                categories => "=${WorkSheetNameToParse}\!\$A\$5:\$A${RowMax}",
                values => "=${WorkSheetNameToParse}\!${Alphabet[$ColToRead]}\$5:${Alphabet[$ColToRead]}${RowMax}",
            );
        }
    $TableOfWsToDraw{$Voltage}->insert_chart( 'E2', $chart );

    }
}
return 1;            

}

1 个答案:

答案 0 :(得分:0)

$TableOfWsToDraw{$Voltage}->insert_chart( 'E2', $chart );总是将图表插入相同的单元格E2中并覆盖它。您需要基于$ i使用不同的单元格。例如:'E'.(2 + $i)。 您可能需要调整单元格的宽度和高度,以避免图表重叠。

相关问题