Spreadsheet :: WriteExcel: динамическое использование для создания диаграмм на одном листе - PullRequest
0 голосов
/ 19 октября 2018

Я на самом деле работаю над автоматизацией, чтобы автоматически рисовать некоторые кривые в одном рабочем наборе.

Я хотел бы знать, есть ли у кого-нибудь советы для меня, чтобы создать динамический код для рисования диаграммы с помощью библиотеки 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 голосов
/ 22 октября 2018

$TableOfWsToDraw{$Voltage}->insert_chart( 'E2', $chart ); всегда вставляет диаграмму в одну и ту же ячейку E2 и перезаписывает ее.Вам нужно использовать разные ячейки на основе $ i.Например: 'E'.(2 + $i).Возможно, вам придется настроить ширину и высоту ячеек, чтобы избежать наложения графиков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...