amélioration de formattage des bilans sous OOo
Posté : mar. nov. 14, 2017 10:35 pm
Bonjour,
Je vous poste une petite amélioration de class_acc_bilan.php.
Il s\'agit de gérer le format des cellules dont le contenu est remplacé par les valeurs des formules.
Actuellement, ces cellules sont au format string.
Dans le cas ou la valeur est numérique, cela empêche d\'appliquer les formats numériques et donc d\'unifier la mise en forme. Cela empêche de plus d\'avoir des formules de calcul dans le fichier ods générés (pour déléguer à OpenOffice certains calculs)
Le patch est dans la fonction generate_odt() en fin de fonction, entre la gestion de la suppression du signe \'-\' pour les valeurs à zéro et le $line_rtf=str_replace($f2_str,$a,$line_rtf); qui remplace la variable par sa valeur dans le fichier ods;
le voilà.
if ( $a==\'-0\' ) $a=0;
/**********************************************************************************************
* Patch
* correction du format de cellule pour
* 1) avoir un format cohérent pour les nombres (nbre de décimales, séparateur de milliers...)
* 2) permettre d\'avoir des formules dans le tableur
* */
if ( is_numeric($a) ) {
$searched=\'office:value-type=\"string\">\'.$f2_str;
$replaced=\'office:value-type=\"float\" office:value=\"\'.$a.\'\">\'.$f2_str;
$line_rtf=str_replace($searched, $replaced, $line_rtf);
$a=number_format($a, 2, \',\' ,\' \');
}
/* fin du patch */
echo_debug(__FILE__.\':\'.__LINE__.\'- $a =\',$a);
$line_rtf=str_replace($f2_str,$a,$line_rtf);
}// foreach end
} // while ereg
$r.=$line_rtf;
}// odt file is read
return $r;
}
Le patch peut sans doute être optimisé en déportant la création des parties constantes des chaines de recherche et de remplacement en dehors de la boucle de la fonction. Il est de même sans doute plus efficace de réaliser l\'opération dans le même remplacement que celui de $sf2_str par sa valeur.
Cordialement
Bertrand
Je vous poste une petite amélioration de class_acc_bilan.php.
Il s\'agit de gérer le format des cellules dont le contenu est remplacé par les valeurs des formules.
Actuellement, ces cellules sont au format string.
Dans le cas ou la valeur est numérique, cela empêche d\'appliquer les formats numériques et donc d\'unifier la mise en forme. Cela empêche de plus d\'avoir des formules de calcul dans le fichier ods générés (pour déléguer à OpenOffice certains calculs)
Le patch est dans la fonction generate_odt() en fin de fonction, entre la gestion de la suppression du signe \'-\' pour les valeurs à zéro et le $line_rtf=str_replace($f2_str,$a,$line_rtf); qui remplace la variable par sa valeur dans le fichier ods;
le voilà.
if ( $a==\'-0\' ) $a=0;
/**********************************************************************************************
* Patch
* correction du format de cellule pour
* 1) avoir un format cohérent pour les nombres (nbre de décimales, séparateur de milliers...)
* 2) permettre d\'avoir des formules dans le tableur
* */
if ( is_numeric($a) ) {
$searched=\'office:value-type=\"string\">\'.$f2_str;
$replaced=\'office:value-type=\"float\" office:value=\"\'.$a.\'\">\'.$f2_str;
$line_rtf=str_replace($searched, $replaced, $line_rtf);
$a=number_format($a, 2, \',\' ,\' \');
}
/* fin du patch */
echo_debug(__FILE__.\':\'.__LINE__.\'- $a =\',$a);
$line_rtf=str_replace($f2_str,$a,$line_rtf);
}// foreach end
} // while ereg
$r.=$line_rtf;
}// odt file is read
return $r;
}
Le patch peut sans doute être optimisé en déportant la création des parties constantes des chaines de recherche et de remplacement en dehors de la boucle de la fonction. Il est de même sans doute plus efficace de réaliser l\'opération dans le même remplacement que celui de $sf2_str par sa valeur.
Cordialement
Bertrand