2012-07-03 6 views
2
#!/usr/bin/env perl 
use warnings; 
use strict; 

use Excel::Writer::XLSX; 

my $workbook = Excel::Writer::XLSX->new('perl.xlsx'); 
my $worksheet = $workbook->add_worksheet(); 

$worksheet->write_formula('A1', '=SUM(1, 2, 3, 4)'); 

$workbook->close(); 

Jusqu'à présent, cela fonctionnait correctement avec LibreOffice. Mais aujourd'hui cela ne marche plus (la valeur dans A1 est 0) - peut-être à cause de certaines mises à jour de LibreOffice (LibreOffice 3.5 Build-ID: 350m1 (Build: 402)).Excel :: Writer :: XLSX: Problèmes avec LibreOffice

Est-ce que le occasionally dans la partie suivante de la documentation Excel::Writer::XLSX fait référence à ce genre de situation?

If required, it is also possible to specify the calculated value of the formula. This is occasionally necessary when working with non-Excel applications that don't calculate the value of the formula. The calculated $value is added at the end of the argument list

Répondre

1

Excel :: Writer :: XLSX ne calcule pas la valeur d'une formule qui il écrit. Au lieu de cela, il insère 0 et permet à l'utilisateur de spécifier la valeur si nécessaire.

Ce n'est pas une excellente solution, mais c'est le mieux que l'on puisse faire car le calcul de formules complexes arbitraires dépasse la portée du module. Et, en général, Excel et d'autres applications tierces recalculeront les valeurs de formule pour l'affichage.

0

C'est un paramètre dans LibreOffice. Voici une solution (citation de here):

LibreOffice ne recalcule pas intentionnellement les feuilles de calcul, parce que les formules sont mises à jour de la version à la version ou entre différents programmes de tableur, les résultats peuvent être différents. Aller à Outils - Options - LibreOffice Calc, sous 'Recalcul sur le fichier load', changer les deux listes déroulantes, 'Excel 2007 et plus récent' et 'ODF Tableur (non sauvegardé par LibreOffice)', à 'Toujours recalculer' . Cliquez sur OK, fermez la feuille de calcul et LibreOffice. Maintenant, ouvrez le fichier dans LibreOffice et vous devriez voir que les formules ont recalculé.

Allez également dans Outils - Contenu de la cellule et assurez-vous que la fonction Calcul automatique est sélectionnée.

Questions connexes