Export PHP => Excel, float reconnu comme une date
Posté : 25 févr. 2010, 11:37
Bonjour,
Je fais un export d'un tableau PHP vers Excel, de cette manière :
Par contre, si je définie que number_format(get_tva($inscription["montant_transport"]), 2, ".", " ") vaut 20.21 par exemple, le logiciel le reconnait bien comme un float. D'un point de vue logique, je dirai qu'il suffit que la valeur entière de mon float soit supérieure à 12 (le nombre de mois dans l'année) pour qu'il soit reconnu en tant que float et non en tant que date.
Existe t-il un moyen de forcer un type de donnée, directement dans mon script ?
Je fais un export d'un tableau PHP vers Excel, de cette manière :
$separator = ";";
// Première ligne Excel
$csv_output = "Structure".$separator."Date d'inscription".$separator."Places maximum autorisées".$separator."Places réservées".$separator."Montant H.T.".$separator."Montant T.V.A.".$separator."Montant T.T.C.".$separator."Transport H.T.".$separator."Transport T.V.A.".$separator."Transport T.T.C.";
$csv_output .= "\n";
//Boucle sur les resultats
foreach($inscriptions as $key => $inscription) {
$inscription["montant_transport"] = $inscription["montant_transport_arrivee"] + $inscription["montant_transport_depart"];
//$inscription["montant_transport"] = 120;
$csv_output .= $inscription["je_nom"].$separator;
$csv_output .= $inscription["liste_date"].$separator;
$csv_output .= $inscription["liste_places_max"].$separator;
$csv_output .= $inscription["places_reservees"].$separator;
$csv_output .= number_format($inscription["liste_montant"], 2, ".", " ").$separator;
$csv_output .= number_format(get_tva($inscription["liste_montant"]), 2, ".", " ").$separator;
$csv_output .= number_format(get_taxed_price($inscription["liste_montant"]), 2, ".", " ").$separator;
$csv_output .= number_format($inscription["montant_transport"], 2, ".", " ").$separator;
$csv_output .= number_format(get_tva($inscription["montant_transport"]), 2, ".", " ").$separator;
$csv_output .= number_format(get_taxed_price($inscription["montant_transport"]), 2, ".", " ");
$csv_output .= "\n";
}
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=".date("Y-m-d")."-inscriptions-".rewrite_value($inscription["event_nom"]).".xls");
print utf8_decode($csv_output);
exit();
La cellule qui me pose problème est celle-ci :
$csv_output .= number_format(get_tva($inscription["montant_transport"]), 2, ".", " ").$separator;
En effet, dans mon tableau de test, number_format(get_tva($inscription["montant_transport"]), 2, ".", " ") vaut 11.76. Et lorsque j'ouvre mon tableau excel généré (via OpenOffice, mais ça sera je pense pareil en l'ouvrant via Excel), le logiciel comprend que 11.76 est une date, et me le formate en "01/11/1976".Par contre, si je définie que number_format(get_tva($inscription["montant_transport"]), 2, ".", " ") vaut 20.21 par exemple, le logiciel le reconnait bien comme un float. D'un point de vue logique, je dirai qu'il suffit que la valeur entière de mon float soit supérieure à 12 (le nombre de mois dans l'année) pour qu'il soit reconnu en tant que float et non en tant que date.
Existe t-il un moyen de forcer un type de donnée, directement dans mon script ?