Perl: plot graphique sur Excel xls et pas xlsx [Fermé]

Signaler
-
Messages postés
33
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
4 avril 2021
-
Bonjour,

Je sais générer un graphique à partir de Perl sur un Excel xlsx (j'utilise les infos de CPAN sur le sujet: http://search.cpan.org/dist/Spreadsheet-WriteExcel/lib/Spreadsheet/WriteExcel/Chart.pm):
my $chart = $workbook->add_chart etc.... et ça marche nickel !
Mais je ne vois pas d'équivalent pour faire de même sur un format xls.
Or je souhaite travailler sur un format xls et non xlsx.
J'ai déjà pas mal farfouillé sur le net mais je ne vois rien qui réponde à ce problème.
Je remercie d'avance celles ou ceux qui pourraient un peu m'aiguiller!

Jamie MacUloth

2 réponses

Messages postés
5550
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
12 mai 2021
933
Salut,

C'est bizarre, car d'après la doc CPAN le module Spreadsheet::WriteExcel est précisément sensé gérer l'ancien format .xls seulement, alors que le format .xlsx est géré par le module plus récent Excel::Writer::XLSX

Les deux modules sont compatibles, mais le premier n'est plus maintenu que pour les bogues de sécurité en raison de l'obsolescence du format.


Dal
Messages postés
33
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
4 avril 2021

Coucou Dal merci ,

Oui en fait j'ai finalement vu que c'était possible mais j'ai un peu galéré donc je poste ici une solution de mon problème. En fait ce que je veux c'est généré un graphique en me basant sur 2 colonnes d'un xls dont la ligne max est stockée dans une variable $row_range:
En xlsx par exemple:
$chart->add_series(
name => 'le titre de mon graphique',
categories => ["sheet_toto", $row_start, $row_range, $my_col, $my_col], # je sélectionne par exemple une seule colonne genre abscisse
values => ["sheet_toto", $row_start, $row_range, $my_col2, $my_col2], # je sélectionne par exemple une seule colonne genre ordonnée,
);

==> La même syntaxe plantait en xls et du coup j'ai cru que c'était pas possible. Finalement en fouillant j'utilise cette syntaxe et ça marche:

En xls:

$chart->add_series(
name => "'le titre de mon graphique",
categories => "=sheet_toto!\$C$2:\$C:$row_range",
values => "=sheet_toto!\$G$2:\$G:$row_range",
);

==> cette syntaxe marche pour xls pour moi :)

JamieMacUloth