Больше форматирования в круговых диаграммах в электронной таблице ::WriteExcel (perl)

#perl #excel

#perl #excel

Вопрос:

Кто-нибудь знает, возможно ли добавить больше форматирования к круговой диаграмме? Например, отображение процентов каждого фрагмента на самом графике или отображение меток каждого фрагмента рядом / на нем? Вместо того, чтобы иметь только одну простую легенду?

Спасибо!

Ответ №1:

Это невозможно с электронной таблицей::WriteExcel, но это возможно с Excel::Writer::XLSX.

Вот пример:

 #!/usr/bin/perl

use strict;
use warnings;
use Excel::Writer::XLSX;

my $workbook  = Excel::Writer::XLSX->new( 'chart_pie.xlsx' );
my $worksheet = $workbook->add_worksheet();
my $bold      = $workbook->add_format( bold => 1 );

# Add the worksheet data that the charts will refer to.
my $headings = [ 'Category', 'Values' ];
my $data = [
    [ 'Apple', 'Cherry', 'Pecan' ],
    [ 60,       30,       10     ],
];

$worksheet->write( 'A1', $headings, $bold );
$worksheet->write( 'A2', $data );

# Create a new chart object. In this case an embedded chart.
my $chart = $workbook->add_chart( type => 'pie', embedded => 1 );

# Configure the series.
$chart->add_series(
    name        => 'Pie sales data',
    categories  => [ 'Sheet1', 1, 3, 0, 0 ],
    values      => [ 'Sheet1', 1, 3, 1, 1 ],
    data_labels => { value => 1 },
);

# Add a title.
$chart->set_title( name => 'Popular Pie Types' );

# Set an Excel chart style. Colors with white outline and shadow.
$chart->set_style( 10 );

# Insert the chart into the worksheet (with an offset).
$worksheet->insert_chart( 'C2', $chart, 25, 10 );

__END__
  

И это отображаемая диаграмма:
введите описание изображения здесь

Комментарии:

1. Большое вам спасибо! Просто интересно, есть ли способ, чтобы Apple / Cherry / Pecan также отображались? Кроме того, я просмотрел Excel::Writer :: XLSX, и синтаксис кажется похожим, если не таким же, как Spreadsheet::WriteExcel. Это правда или я недостаточно внимательно смотрю?

2. Кроме того, возможно ли добавить в файл Excel, содержащий графики?

3. 1. К data_labels можно добавлять имена, значения или категории. Смотрите Chart.pm документы для получения дополнительной информации. 2. Синтаксис Excel::Writer::XLSX такой же, как у Spreadsheet::WriteExcel. Это совместимо с API. В настоящее время существуют некоторые различия в функциональности, см. Документы. 3. Невозможно добавить к существующему файлу Excel с помощью этого модуля.

4. (в процессе очистки) Не удается найти метод объекта «newdir» через пакет «File:: Temp» в / home/ gauravp/INSTALL /modules /lib / perl5 /site_perl / 5.8.8 / Excel / Writer / XLSX / Workbook.pm строка 823. — Я получаю эту ошибку. Есть исправление?

5. @virus нехорошо добавлять новые вопросы в конец другого вопроса. В любом случае, вам, вероятно, нужно обновить File::Temp.