Formater fichier CSV

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Formater fichier CSV

par jeanmed » 07 janv. 2008, 00:09

MErci,

Je pense bloquer sur la moyenne !

Je ne vois pas comment faire.

Merci d avance

Re: Formater fichier CSV

par Xenon_54 » 06 janv. 2008, 23:05

Je voudrais formater mon fichier sous cette forme (si j ai un tableau Array c est bon aussi):

Code : Tout sélectionner

ID;QT;POID 1;100,3;1,797 2;167,15;3,434 3;221,24;5,072 4;222,59;6,709
fgetcsv() retourne un tableau des valeurs des champs de la ligne.
Si tu fais ceci:
<?php

$fp = fopen('test.csv', 'r');

$data = Array();

while (!feof($fp)) {
    $data[] = fgetcsv($gp, 1024);
}

fclose($fp);
?>
Tu auras un tableau avec tes données.

Adapte la ligne $data[] = fgetcsv($gp, 1024); pour faire le formatage que tu veux non?

Est-ce que le champ QT dans la sortie doit être une moyenne des 4 champs QT en entrée? Si oui, fais la moyenne dans la boucle et affiche le résultat.

Concentre toi sur le résultat désiré et pense à tous les traitements que PHP devra faire pour arriver aux résultats. Je ne crois pas que ce soit très compliqué.

1) J'ouvre le fichier
2) Je dois lire les lignes. Donc je boucle avec fgetcsv()
3) Je dois faire une moyenne des 4 champs QT. Donc je récupère les champs retournés par fgetcsv() et je fais le calcul de la moyenne.
4) Je dois formater le résultat. Je prends la fonction echo() je j'affiche le tout comme je veux.
5) Je ferme le fichier.

J'essaie de comprendre à quel étape tu bloques. :)

par jeanmed » 06 janv. 2008, 14:55

Merci pour la reponse,

Oui je connais le PHP et la Fonction fgetcsv qui permet de recreer un tableau du fichier CSV.

Voici mon code :
<?
$fichier = "test.csv";
$fic = fopen($fichier, 'rb');

echo "<table border='1'>\n";
for ($ligne = fgetcsv($fic, 1024); !feof($fic); $ligne = fgetcsv($fic, 1024)) {
  echo "<tr>";
  $j = sizeof($ligne);
  for ($i = 0; $i < $j; $i++) {
    echo "<td>$ligne[$i]</td>";
    }
  echo "</tr>";
  }
echo "</table>\n";

?>
Voici mon fichier CSV :

Code : Tout sélectionner

QT1;QT2;QT3;QT4;POID1;POID2;POID2;POID3;POID4 100,30;167,15;221,24;222,59;1,797;3,434;5,072;6,709
J ai donc un tableau similaire a celui je j ai dans excel.

Je voudrais le formater de cette maniere :

Code : Tout sélectionner

ID;QT;POID 1;100,3;1,797 2;167,15;3,434 3;221,24;5,072 4;222,59;6,709
Mais je n arrive pas trouve le bon mécanisme dans ma boucle pour mettre chaque QT et chaque Poid sur meme ligne.

MErci d avance

par Xenon_54 » 06 janv. 2008, 12:07

http://www.php.net/manual/fr/function.fgetcsv.php peut-être?

As-tu des notions de PHP et des fonctions de gestion de fichiers?
Peut-être nous donner plus d'informations sur les problèmes rencontrés?

Formater fichier CSV

par jeanmed » 06 janv. 2008, 11:16

Bonjour,

J'ai un fichier enorne de prix et quantité que je dois formater d'une certaine manière pour l intégrer dans ma base de donnée.

Voici le fichier original CSV (il n y a qu 'une ligne mais mon fichier ne contient plus de 13000) :

Code : Tout sélectionner

QT1;QT2;QT3;QT4;POID1;POID2;POID2;POID3;POID4 100,30;167,15;221,24;222,59;1,797;3,434;5,072;6,709
Pour Chaque ligne j ai 4 QT pour les quantité et 4poids.

Je voudrais formater mon fichier sous cette forme (si j ai un tableau Array c est bon aussi):

Code : Tout sélectionner

ID;QT;POID 1;100,3;1,797 2;167,15;3,434 3;221,24;5,072 4;222,59;6,709
Pouvez vous m aider ???