#1 Le 22/09/2017, à 16:27
- mod77
ecrire valeur dans excel via script
Bonjour,
J'ai lu ceci https://forum.ubuntu-fr.org/viewtopic.p … #p21799546
et souhaite savoir s'il est possible d'écrire une valeur dans une cellule excel svp? ou d'exécuter une macro svp?
Merci
Hors ligne
#2 Le 22/09/2017, à 20:32
- J5012
Re : ecrire valeur dans excel via script
si tu t'etais rendu à l'adresse indiquee ? → https://xlsxwriter.readthedocs.io/examp … ml#ex-demo
Hors ligne
#3 Le 23/09/2017, à 16:13
- mod77
Re : ecrire valeur dans excel via script
super!
merci, je vais essayer de me débrouiller avec ;-)
Hors ligne
#4 Le 23/09/2017, à 16:52
- mod77
Re : ecrire valeur dans excel via script
J'ai essayé de faire à ma sauce mais, étant débutant, je ne sais pas comment exécuter mon code.
Est-ce dans un terminal ?
j'ai écris ceci:
#!/bin/bash
/usr/bin/python <<'EOF'
import xlsxwriter
workbook = xlsxwriter.Workbook ('demo.xlsx')
worksheet = workbook.add_worksheet ()
worksheet.write('A1', 'Hello')
worksheet .write(2, 0, 1)
workbook.close()
EOF
Hors ligne
#5 Le 24/09/2017, à 20:43
- J5012
Re : ecrire valeur dans excel via script
non c'est un script bash qui appelle un script python, ou directement un script python qui s'auto-execute comme un script bash, l'astuce ou la regle (parce que c'est une regle systeme) :
#!/bin/python
au debut du script pour signaler au systeme q'il s'agit d'un script python auto-executable (avec la coche dans les proprietes du fichier par nautilus)
Hors ligne
#6 Le 24/09/2017, à 21:38
- mod77
Re : ecrire valeur dans excel via script
Donc mon code est bon si je l'écris comme ça:
#!/bin/python
/usr/bin/python <<'EOF'
import xlsxwriter
workbook = xlsxwriter.Workbook ('demo.xlsx')
worksheet = workbook.add_worksheet ()
worksheet.write('A1', 'Hello')
worksheet .write(2, 0, 1)
workbook.close()
EOF
Mais avec quoi je dois l'ouvrir dans propriété, svp? y a pas nautilus.
Hors ligne
#7 Le 24/09/2017, à 22:05
- Compte anonymisé
Re : ecrire valeur dans excel via script
plutôt :
#!/bin/python
import xlsxwriter
workbook = xlsxwriter.Workbook ('demo.xlsx')
worksheet = workbook.add_worksheet ()
worksheet.write('A1', 'Hello')
worksheet .write(2, 0, 1)
workbook.close()
pour installer (comme je sais pas quel python tu utilises) :
sudo apt install python3-xlsxwriter python-xlsxwriter
par contre, a moins que ton but c'est écrire "hello" sur la première case et 1 sur la 3ième, d'un fichier qui s'appelle "demo.xlsx", le script me parait pas encore au point.
Si tu veux l'utiliser dans nautilus, tu peux placer le script dans ~/.local/share/nautilus/scripts (ne pas oublier de le rendre exécutable), et tu pourras avec un clique droit sur fichiers choisir le script dans le menu "scripts"
si tu veux l'utiliser avec le terminal il faut le placer dans un dossier contenu dans la variable système $PATH (ou taper le chemin vers l’exécutable)
#8 Le 25/09/2017, à 10:42
- mod77
Re : ecrire valeur dans excel via script
Bonjour et merci de m'aider,
A la base je ne sais pas quel python j'utilise.
J'ai ubuntu et souhaite écrire dans une colonne d'un fichier excel.
J'ai trouvé ce script et souhaite l'adapter pour réaliser mon but.
Le code c'est un peu du chinois pour moi, mais j'essaie.
A la place du message 'hello', il y aura une variable qui changera de valeur (nombre) et idem pour l'autre affichage.
Hors ligne
#9 Le 25/09/2017, à 18:19
- Compte anonymisé
Re : ecrire valeur dans excel via script
pour savoir quel python tu utilises (au final ça changera pas grand chose au code, c'est juste pour le paquet à installer)
python --version
je te propose ce code pour une version console :
#!/bin/python
import xlsxwriter
import sys
workbook = xlsxwriter.Workbook (sys.argv[1])
worksheet = workbook.add_worksheet ()
worksheet.write(sys.argv[2], sys.argv[3])
workbook.close()
ensuite il suffit de l’exécuter comme ça :
python nomduscript.py fichier.xlsx A2 valeur
ce qui écrit "valeur" dans la case A2 du fichier.xlsx (dans l'onglet courant je suppose)
Dernière modification par Compte anonymisé (Le 25/09/2017, à 18:21)
#10 Le 25/09/2017, à 22:25
- mod77
Re : ecrire valeur dans excel via script
j'ai la version 2.7.12 de python
J'ai essayé ton code mais message d'erreur:
python can't open file 'essai.py' : [Errno 2] No such file or directory
Hors ligne
#11 Le 25/09/2017, à 22:54
- alex2423
Re : ecrire valeur dans excel via script
Je n'y connais rien en python mais le message d'erreur est assez explicite et est un grand classique !
Tape la commande suivante pour voir
ls totototo
python can't open file 'essai.py' : [Errno 2] No such file or directory
Ta commande te raconte que python ne peut pas ouvrir le fichier.
No => aucun
such => tel
file => fichier
Auncun tel fichier ou répertoire.
La solution : s'assurer que le fichier que tu passes en paramètre à python est bien présent
Tape la commande :
ls essai.py
ou
ls
Je te parie que tu n'es pas dans le bon répertoire ou se trouve ton fichier py
Hors ligne
#12 Le 26/09/2017, à 06:07
- mod77
Re : ecrire valeur dans excel via script
alex2423,
merci de ta traduction, mais si j'ai écris le message d'erreur c'est pour que celui qui m'a donner le code puisse savoir exactement le message que j'ai suite à son code ;-)
car je pensais que son code créait le fichier (dans le répertoire courant).
Ce qui m'amène justement à 2 questions pour Compte anonymisé:
1) puis-je indiquer le chemin où est le fichier ? comment stp?
2) puis-je écrire dans un fichier excel déjà et toujours ouvert ? comment stp?
Dernière modification par cqfd93 (Le 03/05/2018, à 21:22)
Hors ligne
#13 Le 26/09/2017, à 17:29
- Compte anonymisé
Re : ecrire valeur dans excel via script
j'ai oublié de préciser qu'il faut être dans le dossier du script si on l'appelle comme ça
Le plus simple c'est que tu mets ton script dans le même dossier que tes fichiers excel
tu te place dans le dossier en question (avec la commande cd), et tu lances la commande comme cité précédemment.
Pour répondre à tes questions :
1) oui, si le fichier est pas dans le dossier courant il faut lui indiquer le chemin (soit absolu /home/tonnom/tondossier/tonfichier, soit relatif tondossier/tonfichier)
2) déjà ouvert ? tu veux dire déjà existant ? oui tu peux, c'était le but
non ? Tu peux aussi créer un tableau de toute pièce avec ce script.
Dernière modification par Compte anonymisé (Le 26/09/2017, à 17:30)
#14 Le 26/09/2017, à 18:14
- mod77
Re : ecrire valeur dans excel via script
Le truc c'est que je ne peux pas mettre les 2 dans le même dossier. Pour des raisons trop compliquées à expliquer.
Par contre, j'ai le chemin absolu "D:\dossier1\..\essai.xlsx"
Dans ce cas, comment je spécifie dans ton code ce chemin absolu stp?
Non seulement mon fichier existe mais en plus au moment où je lance le script il est ouvert en attente des infos susceptible d'être envoyées par le script en question.
Il devra écrire dans la colonne Q6 à Q156 pour être précis
Hors ligne
#15 Le 26/09/2017, à 18:37
- Compte anonymisé
Re : ecrire valeur dans excel via script
tu es sur Windows ? ton chemin semble être un chemin windows (nom de lecture et anti-slash), pour savoir où es ton fichier tu peux faire un clic droite avec ton navigateur de fichier et tu fais propriété et le chemin apparaît
Après je comprends pas trop la difficulté, tu peux mettre ton fichier excel et ton script n'importe où, exemple :
python /dossier1/dossier2/monscript.py /dossier3/dossier4/fichierexcel.xlsx Q6 valeur
si le chemin commence par / il est absolu, sinon il dépend du dossier actuel.
Après je me suis planté, finalement il ne peut modifier de fichier existant, il faut crée l'intégralité du fichier avec le script.
XlsxWriter can only create new files. It cannot read or modify existing files.
il faut trouver autre chose si tu veux modifier un fichier existant (bon pour l'instant je comprends pas grand chose à ce que tu veux faire, mettre des valeurs dans des cases, mais qui dépendent de quoi ?)
Dernière modification par Compte anonymisé (Le 26/09/2017, à 18:39)
#16 Le 26/09/2017, à 19:04
- mod77
Re : ecrire valeur dans excel via script
D'accord, je vais essayer avec le chemin comme tu l'indique. c'est cool:) on a rien a changer. Merci.
Ce n'est pas grave si on doit créer le fichier excel, il me semblait bien que tu le créais avec l'instruction
worksheet = workbook.add_worksheet ()
j'explique ce que je fais:
je travaille sous windows avec excel et j'exécute un script sous unbuntu via une VM. Ce script me renvoie des infos (150) (nombre 1, valeur 1) via un fichier .CSV.
J'affiche ces infos, ensuite, dans la colonne Q6 à Q156.
Mais si je peux, grâce à toi et ton script, renvoyer directement ces infos dans mon fichier excel c'est mieux ;-)
Hors ligne
#17 Le 26/09/2017, à 20:36
- alex2423
Re : ecrire valeur dans excel via script
alex2423,
merci de ta traduction, mais si j'ai écris le message d'erreur c'est pour que celui qui m'a donner le code puisse savoir exactement le message que j'ai suite à son code ;-)
car je pensais que son code créait le fichier (dans le répertoire courant).
Pas de problème. En fait je me suis permis de te répondre parce que le message était assez explicite. C'est interessant de pouvoir comprendre ce qu'il nous arrive lorsque nous sommes face à un message d'erreur et de pouvoir débloquer la situation tout seul. Je voulais juste t'apprendre à pécher.
car je pensais que son code créait le fichier (dans le répertoire courant).
Je pense que tu voulais parler de la création du fichier excel *.xlsx mais en l’occurrence ta commande que tu as exécuté
python nomduscript.py fichier.xlsx A2 valeur
te disait comme erreur qu'elle n'arrivait pas à trouver le fichier "nomduscript.py" :
python can't open file 'essai.py' : [Errno 2] No such file or directory
soit le fichier .py de script que tu as précédemment créé avec le code indiqué par Anonyme et non pas le fichier Excel.
Désolé d'être relou la dessus, d'insister mais c'est pour ton bien
Ce qui m'amène justement à 2 questions pour Compte anonymisé:
1) puis-je indiquer le chemin où est le fichier ? comment stp?
Toujours et pour n'importe quelle commande Linux dès que tu indique un fichier d'entrée (soit on se positionne dans le meme répertoire, soit un préciser le chemin du fichier)
Dernière modification par cqfd93 (Le 03/05/2018, à 21:23)
Hors ligne
#18 Le 26/09/2017, à 21:08
- mod77
Re : ecrire valeur dans excel via script
alex2423,
Ta réponse est pertinente car je pensais qu'il ne trouvait pas le fichier .xslx
et comme je l'ai écris au poste 16, cette ligne crée -t-elle le fichier excel ou pas finalement?
Hors ligne
#19 Le 26/09/2017, à 21:48
- alex2423
Re : ecrire valeur dans excel via script
mod77, et oui, ton ordinateur te parlait du fichier .py qu'il n'a réussi à le trouver. Il faut lire ce que te dit ton ordinateur Il faut l'écouter
[HS]
Je ne connais pas du tout python, mais je dirais que ta commande ne créé par le fichier mais créé un onglet. Quand tu as Excel en anglais (cela aide pas mal à assimiler les termes en anglais, pratique pour trouver des infos sur le net ) se dit sheet, je dis que worksheet, c'est à peu près pareil.
[/HS]
J'ai trouvé une page de documentation qui confirme ce qu'a indiqué Anonyme.
http://xlsxwriter.readthedocs.io/workbook.html
Bref, je ne comprends pas la difficulté.
Fais déjà un premier test en lancant son script à partir du répertoire ou se trouve le script py. Pour te positionner tu utilises la commande "cd"
python nomduscript.py fichier.xlsx A2 valeur
Tu constateras ou non si cela écrit bien la valeur "valeur" dans la cellule A2 dans le fichier fichier.xlsx. Après tu pourras passer à l'étape suivante
Hors ligne
#20 Le 26/09/2017, à 21:51
- mod77
Re : ecrire valeur dans excel via script
oui, c'est ce que je comptais faire. merci
Hors ligne
#21 Le 27/09/2017, à 07:33
- Compte anonymisé
Re : ecrire valeur dans excel via script
Le worksheet est obligatoire pour pouvoir écrire avec xlsxwriter
At least one worksheet should be added to a new workbook
#!/bin/python
import xlsxwriter
import sys
workbook = xlsxwriter.Workbook (sys.argv[1])
worksheet = workbook.add_worksheet ()
i=2
while len(sys.argv) > i:
worksheet.write(sys.argv[i], sys.argv[i+1])
i += 2
workbook.close()
avec ce code tu pourras faire
python fichier.xlsx A1 valeur A2 autrevaleur A3 encoreautrevaleur ...
Par contre je pense qu'il faut que tu regardes du côté des fichiers CSV à la place des fichiers Excel qui me semble plus approprié pour travailler avec des scripts.