RESOLU :comment générer un fichier excel depuis Cshell

RESOLU :comment générer un fichier excel depuis Cshell - Shell/Batch - Programmation

Marsh Posté le 27-04-2006 à 23:30:43    

c'est un script que je dois réaliser pour mon entreprise, j'ai déjà céer le script mais je dois  générer un fichier excel depuis le programme csh que j'ai créer, aidez moi svp

Message cité 1 fois
Message édité par blandameva le 01-05-2006 à 10:16:08
Reply

Marsh Posté le 27-04-2006 à 23:30:43   

Reply

Marsh Posté le 28-04-2006 à 10:23:55    

blandameva a écrit :

c'est un script que je dois réaliser pour mon entreprise, j'ai déjà céer le script mais je dois  générer un fichier excel depuis le programme csh que j'ai créer, aidez moi svp


 
Si c'était si facile de créer un fichier au format XLS, on se demande pourquoi des équipes entières de développeurs travaillent sur le projet "openOffice" depuis des années... Le format XLS est un format propriétaire Micro$oft et son code est protégé.
 
La bonne (et probablement la seule) solution que tu as est de créer ton fichier au format "CSV" qui est un fichier texte avec
- une ligne par ligne
- chaque colonne séparée de la suivante par un élément caractéristique que tu définis toi-même et qu'on ne peut pas retrouver dans le texte de la colonne. En général c'est la virgule par défaut mais tu peux prendre ce que tu veux (un point-virgule ou une tabulation ou autre...)
 
Ensuite, tu importes ton fichier CSV dans Excel en lui disant quel est le séparateur que tu as choisi. Excel te créera lui-même ton tableur avec toutes les colonnes à la bonne place.


Message édité par Sve@r le 28-04-2006 à 10:25:18

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 28-04-2006 à 11:29:20    


 :sarcastic:  
oui, merci c'est très préci comme explication, mais vois tu je suis débuter et ça m'aiderai bien si pourrai me donner un exemple de code pour générer le fichier CSV
 
voici ce que donne le code csh à l'exécution
   Date/Heure du jour      ;Web Licence;Web Active;GUI Licence;GUI Active;Z39 Licence;Z39 Active;Selfcheck Lic;Selfcheck Active
Fri Apr 28 11:28:13 CEST 2006; 000000100; 000000002; 000000020 ;000000000 ; 000000015 ; 000000000; 000000002   ;000000000
    Date/Heure du jour      ;Web Licence;Web Active;GUI Licence;GUI Active;Z39 Licence;Z39 Active;Selfcheck Lic;Selfcheck Active
Fri Apr 28 11:28:20 CEST 2006; 000000100; 000000002; 000000020 ;000000000 ; 000000015 ; 000000000; 000000002   ;000000000
    Date/Heure du jour      ;Web Licence;Web Active;GUI Licence;GUI Active;Z39 Licence;Z39 Active;Selfcheck Lic;Selfcheck Active
Fri Apr 28 11:28:26 CEST 2006; 000000100; 000000002; 000000020 ;000000000 ; 000000015 ; 000000000; 000000002   ;000000000
 
je voudrai maintenant comme tu me l'as dit l'importer dans un fichier CSV.
 
merci par avance


---------------
didine
Reply

Marsh Posté le 28-04-2006 à 11:58:14    

blandameva a écrit :

oui, merci c'est très préci comme explication, mais vois tu je suis débuter et ça m'aiderai bien si pourrai me donner un exemple de code pour générer le fichier CSV
 
voici ce que donne le code csh à l'exécution
   Date/Heure du jour      ;Web Licence;Web Active;GUI Licence;GUI Active;Z39 Licence;Z39 Active;Selfcheck Lic;Selfcheck Active
Fri Apr 28 11:28:13 CEST 2006; 000000100; 000000002; 000000020 ;000000000 ; 000000015 ; 000000000; 000000002   ;000000000
    Date/Heure du jour      ;Web Licence;Web Active;GUI Licence;GUI Active;Z39 Licence;Z39 Active;Selfcheck Lic;Selfcheck Active
Fri Apr 28 11:28:20 CEST 2006; 000000100; 000000002; 000000020 ;000000000 ; 000000015 ; 000000000; 000000002   ;000000000
    Date/Heure du jour      ;Web Licence;Web Active;GUI Licence;GUI Active;Z39 Licence;Z39 Active;Selfcheck Lic;Selfcheck Active
Fri Apr 28 11:28:26 CEST 2006; 000000100; 000000002; 000000020 ;000000000 ; 000000015 ; 000000000; 000000002   ;000000000
 
je voudrai maintenant comme tu me l'as dit l'importer dans un fichier CSV.
 
merci par avance [


 
Tu connais pas la redirection ? C'est un mécanisme général d'Unix qui te permet de renvoyer vers un fichier tout ce qu'un programme affiche à l'écran.
 
Exemple: tu lances "date" tu as la date à l'écran. Si tu lances "date >fic", ta date sera écrite dans un fichier "fic".
 
Chaque commande Unix possède 2 canaux d'affichage
- le canal standard numéroté "1"
- le canal des erreurs numéroté "2"
Chaque message standard passe par le "1", chaque message d'erreur passe par le "2"
Exemple: commande 1>res 2>err
Si la commande réussi, tout ce qu'elle affiche ira dans le fichier "res". Si elle échoue pour une raison quelconque, tous ses messages d'erreur iront dans le fichier "err".
Quand on ne met pas de chiffre, c'est le chiffre "1" qui est pris par défaut
 
Enfin, la simple redirection ">" réinialise le fichier, la double redirection ">>" écrit à la fin du fichier
Exemple

date >fic
echo "ok" >fic


Là, ton "echo" écrase la date. il aurait fallu écrire "echo ok >>fic" pour que ça marche
 
 
Pour répondre à ta question initiale, il faut modifier ton csh pour qu'il n'affiche qu'une seule fois la ligne de titre "Date/Heure; Web; ...; Active". Ensuite, il te suffit de lancer ton script en le redirigeant vers un fichier

./script.csh >toto.csv


 
Si ton script doit toujours écrire dans un CSV, alors tu peux mettre les redirections dans le script lui-même ce qui t'évite de le rediriger lorsques tu le lances (tu remplaces chaque "echo ..." par "echo ... >> toto.csv" ). Ensuite, tu lances simplement le script...

./script.csh


Message édité par Sve@r le 28-04-2006 à 12:08:04

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 28-04-2006 à 12:45:22    

si je connais et je l'avais utilisé aussi, mais je me demander si c'était ça qu'il fallait faire mais, il ya un problème:
mes valeurs à retourner sont dans une boucle, donc en redirigeant vers > test.csv
lorsque j'exécute mon script, ça ne m'affiche rien, toutes les valeurs sont retournées dans le fichier test.csv
 
sinono pour l'affiche de la première ligne echo, c'est résolu
 
[#0000ff]voici le code:
 
echo "    Date/Heure du jour      ;Web Licence;Web Active;GUI Licence;GUI Active;Z39 Licence;Z39 Active;Selfcheck Lic;Selfcheck Active"
 
boucle:
#variable contenant la date et l'heure de l'affichage
set dateaffiche = `date`
#set dateaffiche   =  `date +"%d"`_`date +"%m"`_`date +"%T"`
# Recuperation de la liste
cobrun $aleph_exe/uy_11 >  /tmp/lic
 
set web_lic = `grep 'Licensed users' /tmp/lic | cut -d ':' -f2 | sed 's/ //g'`
set web_active = `grep 'Active users' /tmp/lic | cut -d ':' -f2 | sed 's/ //g'`
set gui_lic = `grep 'Licensed GUI users' /tmp/lic | cut -d ':' -f2 | sed 's/ //g'`
set gui_active = `grep 'Active GUI users' /tmp/lic | cut -d ':' -f2 | sed 's/ //g'`
set server_lic = `grep 'Licensed Z39 users' /tmp/lic | cut -d ':' -f2 | sed 's/ //g'`
set server_active = `grep 'Active Z39 users' /tmp/lic | cut -d ':' -f2 | sed 's/ //g'`
set check_lic = `grep 'Licensed SelfCheck servers' /tmp/lic | cut -d ':' -f2 | sed 's/ //g'`
set check_active = `grep 'Active SelfCheck servers' /tmp/lic | cut -d ':' -f2 | sed 's/ //g'`
 
echo "$dateaffiche; $web_lic; $web_active; $gui_lic ;$gui_active ; $server_lic ; $server_active; $check_lic   ;$check_active" > test.csv
sleep 0.6;
goto boucle
[/#007f7f]
 
merci pour tout;


---------------
didine
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed