1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
| #!/usr/bin/python
# -*- coding: utf-8 -*-
import os.path
import shutil
import os
from openpyxl import Workbook
from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font
from openpyxl.drawing.image import Image
from openpyxl.worksheet.pagebreak import Break
from openpyxl.worksheet.properties import WorksheetProperties, PageSetupProperties
from openpyxl.utils import get_column_letter, column_index_from_string
from openpyxl import load_workbook
from PIL import Image as PILImage
path_xls_ref = "XXXX\Excel_Ref.xlsx"
xls_synthese = "XXXX\TableauSynthese.xlsx"
rep_resultat = r"XXXX\Fiche"
logo = "XXXX\Logo.png"
def lecture_tableau_synthese (a) :
dico_synthese ={}
wb = load_workbook(a,data_only=True)
feuille_xls = wb['Synthese']
# +1 car python commence une liste à 0
nbr_colonne = range(len(list(feuille_xls.columns))+1)
nbr_ligne = range(len(list(feuille_xls.rows))+1)
#pour virer le 0 de la liste tout en gardant la dimension du tableau avec le +1 précédent
nbr_colonne = nbr_colonne[1:]
#on commence à 3 car il y a la ligne 0 qui n'existe pas, puis une ligne vide puis 2 ligne de titre
nbr_ligne = nbr_ligne[4:]
for ligne in nbr_ligne :
temp = {}
num_caisse = str(feuille_xls['A'+str(ligne)].value).strip()
num_echant = str(feuille_xls['B'+str(ligne)].value)
nom_echant = feuille_xls['C'+str(ligne)].value
provenance = feuille_xls['D'+str(ligne)].value
ded_contact = feuille_xls['E'+str(ligne)].value
ded_10_cm = feuille_xls['F'+str(ligne)].value
date_spectro = feuille_xls['G'+str(ligne)].value
masse =feuille_xls['I'+str(ligne)].value
conta_alpha_bq = feuille_xls['L'+str(ligne)].value
conta_beta_bq = feuille_xls['M'+str(ligne)].value
surf_frottee = feuille_xls['N'+str(ligne)].value
commentaire = feuille_xls['O'+str(ligne)].value
temp['num_caisse'] = num_caisse
temp['nom_echant'] = nom_echant
temp['provenance'] = provenance
temp['ded_contact'] = ded_contact
temp['ded_10_cm'] = ded_10_cm
temp['date_spectro'] = date_spectro
temp['masse'] = masse
temp['conta_alpha_bq'] = conta_alpha_bq
temp['conta_beta_bq'] = conta_beta_bq
temp['surf_frottee'] = surf_frottee
temp['commentaire'] = commentaire
dico_synthese[ num_echant] = temp
return dico_synthese
def remplissage_fiche (a,b,c) :
#ouverture du fichier et on se place dans le bon onglet
wb = load_workbook(a, keep_links=True)
ws = wb["Extraction"]
ws["B1"]=c
ws["B2"]=b['num_caisse']
ws["B3"]=b['nom_echant']
ws["B4"]=b['provenance']
ws["B5"]=b['ded_contact']
ws["B6"]=b['ded_10_cm']
ws["B7"]=b['date_spectro']
ws["B8"]=b['masse']
ws["B9"]=b['conta_alpha_bq']
ws["B10"]=b['conta_beta_bq']
ws["B11"]=b['surf_frottee']
ws["B12"]=b['commentaire']
#on retoure sur la fiche mesure pour mettre le logo
feuille_xls = wb['Feuil1']
img = Image(logo,size=(50, None),nochangeaspect=True, nochangearrowheads=True)
img.drawing.left = 85
img.drawing.top = 21
feuille_xls.add_image(img)
wb.save(a)
donnees_synthese = lecture_tableau_synthese(xls_synthese)
excel_ref = path_xls_ref.split("\\")
for value in excel_ref:
if not value :
excel_ref.remove(value)
nom_excel_ref = excel_ref[-1]
for key in donnees_synthese.keys() :
# on créée le chemin vers le répertoire de la caisse
path_rep = rep_resultat + "\\Caisse n " + str(donnees_synthese[key]['num_caisse'])
# on test s'il existe ou non
if os.path.isdir(path_rep) == FALSE :
os.mkdir(path_rep)
# on créée le chemin vers la fiche
path_fiche = rep_resultat + "\\Caisse n " + str(donnees_synthese[key]['num_caisse']) + "\\" + str(key) +".xlsx"
#on test si la fiche existe déjà ou non
if os.path.isfile(path_fiche) == FALSE :
# on copie l'excel de référence dans le nouveau répertoire
shutil.copy(path_xls_ref,path_rep)
# on renomme l'excel de référence
nom_xls = str(path_rep) + "\\" +str(key)+".xlsx"
path_temp_excel = str(path_rep) + "\\" + str(nom_excel_ref)
#on renomme les fichiers excel
os.rename(path_temp_excel,nom_xls)
#on remplie les fichiers excel
remplissage_fiche(nom_xls,donnees_synthese[key],key) |
Partager