supprimer une colonne dans un fichier csv

Petit nouveau ! | 3 Messages

30 nov. 2015, 12:13

Bonjour

J'ai un problème je récupère un fichier csv du style
73200;albertvile;;;;12457;oui;;;;245;E
38000;grenoble;immeublr;;;214;non;;;parking;211;D
il y a entre 80 et 100 enregistrements, voila je ne veux garder dans se fichier csv que la 1er et 2eme colonne et 6 eme et les deux derniere, pour réenregistrer en csv.
Je galère depuis 1 semaine je craque ....

Qui peut m'aider merci.
Brigitte

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

30 nov. 2015, 13:08

Bonjour,

Quel est le problème ?
Qu'as tu essayé ? Où bloques-tu ?

Il existe plusieurs façon de faire cela, une solution simple c'est de faire les étapes dans ce sens :
1) lire le contenu du fichier ligne par ligne
2) pour chaque ligne récupérer les valeurs qui t'intéressent et créer une variable qui va stocker sous la forme CSV les données de ta ligne
3) une fois que tu as traité toutes les lignes, tu écris la variable dans ton nouveau fichier CSV
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 42 Messages

30 nov. 2015, 14:59

tu peux commencer comme cela en remplaçant test.csv par le chemin de ton fichier sur le serveur.

test_result.csv est le fichier réécrit
<?php
if (($handle_result = fopen("test_result.csv", "r")) !== FALSE) 
{
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        
fputcsv($handle_resultt, array($data[0], $data[1]));
    }
    fclose($handle);
}
 fclose($handle_result);
}
?>

Petit nouveau ! | 3 Messages

30 nov. 2015, 15:22

oi je le fais pas de problème mais comment supprimer des colones

Mammouth du PHP | 2703 Messages

30 nov. 2015, 17:59

fputcsv($handle_resultt, array($data[0], $data[1]));
donc dans cette exemple, on ne garde que les 2 premières colonnes.

Petit nouveau ! | 3 Messages

07 déc. 2015, 08:55

Bon j'ai fais le test mais je tombe sur une erreur.
mon fichier de départ se nomme produit.csv la séparation des colonnes se fait par des ; et je voudrais que le résultat ne prenne que les 5 premières colonnes sur les 280 pour qu'un fichier produit_final soit créée

Eléphanteau du PHP | 42 Messages

25 déc. 2015, 20:25

Salut Brigitte,

si les colonnes sont délimités par ";", il faut que tu remplace "," par ";" dans le code fournit par moi-même ci-dessus.

Est-ce que tu est sur qu'il y a 280 colonnes par ligne de ton fichier CSV. Je vois plutôt que il y a au maximum une 20aine de colonne pour chaque ligne.