rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Utilisation de la fonction chop en perl

VivoBaggio, le mercredi 3 octobre 2007 à 18:17:24
Bonsoir,

J'aimerais savoir comment utiliser la fonction chop dans une création d'un fichier csv à partir d'un exel. J'ai un vingtaine de colonnes dans mon excel. Et dans 2 colonnes, il y a des champs qui sont remplis avec un retour charriot en plein milieu du champ. J'aimerais savoir comment j'utilise ma fonction chop pour que dans le csv, chaque ligne commence par le même champ.

Extrait du code du parcours du fichier excel et de l'écriture dans le csv.

foreach my $row (2 ... 166)
{
my $cell1 = $sheet->{Cells}[$row][0];
my $cell2 = $sheet->{Cells}[$row][1];
my $cell3 = $sheet->{Cells}[$row][2];
my $cell4 = $sheet->{Cells}[$row][3];
my $cell5 = $sheet->{Cells}[$row][4];
# Ecriture dans le fichier .csv
print F "$cell1->{Val};$cell2->{Val};$cell3->{Val};$cell4->{Val};$cell5->{Val};\n";
}

Merci d'avance de votre aide.
Configuration: Windows XP
Firefox 2.0.0.7
Répondre à VivoBaggio  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lami20j, le mercredi 3 octobre 2007 à 18:26:11
Salut,

la fonction chop supprime le dernière caractère d'une chaîne et retourne le caractère supprimé
ce n'est pas ça qu'il te faut

chaque ligne commence par le même champ.
affiche ici le résultat une partie de ton csv pour voir, puisque je ne comprends pas ce que tu veux obtenir

lami20j
Répondre à lami20j

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
VivoBaggio, le jeudi 4 octobre 2007 à 09:32:48
Alors je t'ai mis un extrait du csv. Chaque ligne doit commencer par SU1107, et comme tu peux le voir, à la ligne 3 et 4, il y a un retour charriot en plein milieu du champ. Comment l'enlever ? Merci

SU1107;6;ECLAIRAGE ELECTRICITE;071115609;Piles alcalines ultra M3 LR6 x 4, LR6 x 8,;
SU1107;7;PARFUMERIE;071115179;Lames Mach3;
SU1107;8;PARFUMERIE;071115181;Le pot ou le tube de 50 ml
(Variétés au choix);
SU1107;9;PARFUMERIE;071115180;L'atomiseur de 200 ml
(Variétés au choix);
SU1107;10;PARFUMERIE;071115182;Dentifrice isioactive menthe fraîche ou;
Répondre à VivoBaggio

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le jeudi 4 octobre 2007 à 10:05:57
Salut,


un truc comme ça (non testé) :

$ligne =~ s/\n/ /;
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lami20j, le jeudi 4 octobre 2007 à 10:20:22
Salut,

le fichier viens du monde windows
il faut savoir du quel caractère s'agit'il
il pourrait être un CR ou CRLF et pas un LF

envoie le fichier (mais d'aborde compresse le) par mail

la commande du blux tu peux l'essayer mais il y a le risque d'avoir des surprises
il faut plutot faire un test pour sur les lignes et remplacer le caractère que pour les lignes qui ne se finissent pas avec ;

lami20j
Répondre à lami20j

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
VivoBaggio, le jeudi 4 octobre 2007 à 10:58:36
Il s'agit d'un CRLF à chaque fin de ligne.

Sinon lami20j, je t'ai envoyer l'extrait de fichier sur ta boite mail, nommé "Test.csv", avec le fichier "Test.xls", dans une archive "Test.rar"
Répondre à VivoBaggio

6


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
lami20j, le jeudi 4 octobre 2007 à 13:22:11
Ca marche la solution du blux, mais elles est testé sous Linux

essaie ce code
donc avant d'écrire dans le fichier je traite la ligne
#!/usr/bin/perl
use strict;use warnings;
use Spreadsheet::ParseExcel;

open F,">>resultat.csv"
    or die "E/S : $!\n";

my $file = "Test.xls";
my $excel = Spreadsheet::ParseExcel::Workbook->Parse($file);
my $sheet = ${$excel->{Worksheet}}[0];

foreach my $row (0 ... 4{
  my $cell1 = $sheet->{Cells}[$row][0];
  my $cell2 = $sheet->{Cells}[$row][1];
  my $cell3 = $sheet->{Cells}[$row][2];
  my $cell4 = $sheet->{Cells}[$row][3];
  my $cell5 = $sheet->{Cells}[$row][4];

  my $res = "$cell1->{Val};$cell2->{Val};$cell3->{Val};$cell4->{Val};$cell5->{Val};";
  $res =~s/\n//;
  print F "$res\n";
}
__END__
lami20j
Répondre à lami20j

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 VivoBaggio, le jeudi 4 octobre 2007 à 13:42:31
Merci les amis pour votre aide, ça marche. Mais j'ai une dernière requête sur ce travail que je mets dans une nouvelle discussion.
Répondre à VivoBaggio
Quand utiliser vista (Résolu)Bonjour, quelle sont les proprietes qu' un ordinateur doit remplir pour bien utiliser fonctionner avec windows vista? www.commentcamarche.net/forum/affich-4479386-quand-utiliser-vista
[Perl] Franciser un module (Résolu)Salut à tous! J'ai là un module PERL que je voudrais "franciser" dirons nous. Le problème c'est que dès que je touche à une portion de code plus rien ne fonctionne!! Le Perl je ne le connais pas assez pour savoir quel est le problème alors... www.commentcamarche.net/forum/affich-6495769-perl-franciser-un-module
Lecteur CD/DVD non detecté ='( (Résolu)Bonjour,a tous =) Voila mon soucis, je viens de monter mon pc et mon lecteur CD n'est pas detecté, impossibilité donc de reeinstaller windows =x Ma carte mere est une ASUS P5KC, le cable IDE que j'utilise fonctionne puisque je... www.commentcamarche.net/forum/affich-5908629-lecteur-cd-dvd-non-detecte
Trier un tableau sans utiliser la fonction sortTrier un tableau sans utiliser la fonction sort D'abord on initialise une variable $max avec la 1ère valeur de tableau. Ensuite on va faire une boucle tant que le tableau contient encore des éléments. C'est avec la fonction splice qui a le rôle... www.commentcamarche.net/faq/sujet-7685-trier-un-tableau-sans-utiliser-la-fonction-sort
[MSN] Utiliser MSN sans l'installer - à partir d'un siteIl est possible d'utiliser un client MSN pour discuter avec ses amis sans avoir à l'installer. Il existe quelques clients conçus pour être utilisés à partir d'un navigateur sous forme de pages Internet. Évidemment, leurs fonctionnalités sont... www.commentcamarche.net/faq/sujet-2219-msn-utiliser-msn-sans-l-installer-a-partir-d-un-site
Google - Fonction calculatriceGoogle dispose d'une calculatrice intégrée. Pour l'utiliser, il suffit simplemement d'entrer une expression dans le champ de saisie et de lancer la recherche ! Cette fonction est aussi accessible à partir de la barre Google ou des navigateurs... www.commentcamarche.net/faq/sujet-814-google-fonction-calculatrice
Utilisation fonction rand() (Résolu)Bonjour, je suis un débutant en programmation en c. voilà je cherche à utiliser rand() pour créer un dé, mais je voudrai afficher tous les chiffre sauf le 5 Est-ce possible ? Comment pourrai-je faire en C? Merci www.commentcamarche.net/forum/affich-7042894-utilisation-fonction-rand
Fonction excel dans VBA (Résolu)Salut, J'essai d'utiliser des fonctions excel sous vba. Cependant, comme je ne connais pas le nombre de ligne (qui est définie par l'utilisateur), j'utilise donc une séquence du genre: j = 4 LDeb = j CDeb = 1 LFin = (j + N - 1)... www.commentcamarche.net/forum/affich-5899789-fonction-excel-dans-vba
Mise en place d'un serveur FTP / Freebox (Résolu)Bonjour, Je possède un serveur NAS (synology DS207), qui a une fonction serveur ftp. J'ai activé cette fonction et en interne, ça marche très bien. Le problème c'est pour y accéder hors du réseau de la maison ! Le serveur est branché sur une... www.commentcamarche.net/forum/affich-6432645-mise-en-place-d-un-serveur-ftp-freebox
Adobe Systems Adobe FrameMaker - (version 8 ) - ensemble de mise à niveau - 1 utilisateur - CAdobe Systems Adobe FrameMaker - (version 8 ) - ensemble de mise à niveau - 1 utilisateur - CD - Win - français,,Le logiciel Adobe FrameMaker est une solution de création et de publication pour toute l'entreprise. Mettez à profit les fonctions de ges www.commentcamarche.net/guide-achat/adobe-systems-adobe-framemaker-version-8-ensemble-de-mise-a-niveau-1-utilisateur-cd-win-francais-516204985-fiche-technique
Adobe Systems Adobe FrameMaker - (version 8 ) - ensemble complet - 1 utilisateur - CD - Win - fran&aAdobe Systems Adobe FrameMaker - (version 8 ) - ensemble complet - 1 utilisateur - CD - Win - français,,Le logiciel Adobe FrameMaker est une solution de création et de publication pour toute l´entreprise. Mettez à profit les fonctions de gestion de l www.commentcamarche.net/guide-achat/adobe-systems-adobe-framemaker-version-8-ensemble-complet-1-utilisateur-cd-win-fran-231-ais-517310314-fiche-technique
Adobe Systems Adobe Photoshop CS3 - Ensemble de mise à niveau - 1 utilisateur - DVD - Win -Adobe Systems Adobe Photoshop CS3 - Ensemble de mise à niveau - 1 utilisateur - DVD - Win - français,CS 3 ,Bénéficiez de toutes les fonctionnalités d´Adobe Photoshop CS3 ainsi que des spécificités de Photoshop CS3 Extended, qui permet de retouch www.commentcamarche.net/guide-achat/adobe-systems-adobe-photoshop-cs3-ensemble-de-mise-224-niveau-1-utilisateur-dvd-win-fran-231-ais-517310285-fiche-technique
Langage C++ - Les fonctions On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du programme une série... www.commentcamarche.net/cpp/cppfonc.php3
Java - Les méthodes On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instruction par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du programme une série... www.commentcamarche.net/java/javafonc.php3
Perl - Les fonctions On appelle procédure un sous-programme qui permet d'effectuer un ensemble d'instruction par simple appel de la procédure dans le corps du programme principal. Les procédure permettent d'exécuter dans plusieurs parties du programme une série... www.commentcamarche.net/perl/perlfonc.php3
Toutes les réponses pour « Utilisation de la fonction chop en perl »