Bonjour la communauté,
Je viens demander votre secours pour une histoire de CSV... J'ai donc un script PHP qui génére un fichier csv (tabulation). Le fichier est nickel lorsque celui est créé dans le dossier de destination du site "/csv" mais lorsque je le propose au téléchargement pour l'utilisateur, çà déraille :s
Une ligne en plus semble rajoutée, et la police ou l'encryptage semble se modifier ce qui rend le fichier unitilisable par la platforme qui doit traiter ce fichier. Quelqu'un aurait une idée ?
Merci d'avance
Screen CSV généré dans le dossier du site (la pas de souci ):
Screen du fichier proposé en téléchargement ( 1 ligne en plus et même si on ne voit pas clairement sur cette capture d'écran, la police de "sku price" est modifiée )
Script PHP qui génére le csv :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 $headers[] = array('sku','price','minimum-seller-allowed-price','maximum-seller-allowed-price', 'quantity', 'leadtime-to-ship', 'fulfillment-channel'); $aff = $link->query("SELECT rapport_ama.sku, rapport_cash.stock, rapport_ama.prix FROM rapport_ama, rapport_cash where rapport_cash.sku = rapport_ama.sku"); while ($row = mysqli_fetch_array($aff)) { $sku = $row[0]; $stock = $row[1]; $prix = str_replace('.',',',$row[2]); $lignes[] = array($sku, $prix, '', '', $stock, '', ''); } // Paramétrage de l'écriture du futur fichier CSV $chemin = 'csv/rapport.txt'; $delimiteur = "\t"; // Pour une tabulation, utiliser $delimiteur = "t"; // Création du fichier csv (le fichier est vide pour le moment) // w+ : consulter http://php.net/manual/fr/function.fopen.php $fichier_csv = fopen($chemin, 'w+'); // Si votre fichier a vocation a être importé dans Excel, // vous devez impérativement utiliser la ligne ci-dessous pour corriger // les problèmes d'affichage des caractères internationaux (les accents par exemple) fprintf($fichier_csv, chr(0xEF).chr(0xBB).chr(0xBF)); foreach ($headers as $head) { fputcsv($fichier_csv, $head, $delimiteur); } // Boucle foreach sur chaque ligne du tableau foreach($lignes as $ligne){ // chaque ligne en cours de lecture est insérée dans le fichier // les valeurs présentes dans chaque ligne seront séparées par $delimiteur fputcsv($fichier_csv, $ligne, $delimiteur); } // fermeture du fichier csv fclose($fichier_csv);
Script PHP qui propose le téléchargement à l'utilisateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $full_path = 'csv/rapport.txt'; $file_name = 'rapport.txt'; ini_set('zlib.output_compression', 0); header('Pragma: public'); header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0'); header('Content-Tranfer-Encoding: none'); header('Content-Length: '.filesize($full_path)); header('Content-MD5: '.base64_encode(md5_file($full_path))); header('Content-Type: application/forced-download; name="'.$file_name.'"'); header('Content-Disposition: attachment; filename="'.$file_name.'"'); readfile($full_path); exit;
Partager