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 134 135 136 137 138
|
import os
import fnmatch
from odf.opendocument import load, OpenDocumentSpreadsheet
from odf.table import Table, TableColumn, TableRow, TableCell
from odf.text import P
# Fonction pour ajouter une colonne avant la colonne A
def ajouter_colonne_avant_a(qfichier_sortie):
# Charger le fichier ODS existant
if os.path.exists(qfichier_sortie):
ods = load(qfichier_sortie)
else:
print("Fichier non trouvé.")
return
tables = ods.getElementsByType(Table)
if not tables:
print("Pas de table trouvée dans le fichier.")
return
table = tables[0] # Sélectionner la première table
# Vérifier s'il y a des colonnes dans la table, sinon en ajouter une
colonnes = table.getElementsByType(TableColumn)
if not colonnes:
# Ajouter une colonne par défaut s'il n'y a pas de colonnes définies
default_column = TableColumn()
table.addElement(default_column)
colonnes = table.getElementsByType(TableColumn)
# Insérer une nouvelle colonne avant la première colonne (colonne A)
new_column = TableColumn()
table.insertBefore(new_column, colonnes[0])
# Ajouter une cellule vide au début de chaque ligne
rows = table.getElementsByType(TableRow)
for row in rows:
new_cell = TableCell()
row.insertBefore(new_cell, row.getElementsByType(TableCell)[0])
# Sauvegarder les modifications dans le fichier
ods.save(cfichier_sortie)
print(f"Colonne ajoutée avec succès avant la colonne A dans le fichier '{cfichier_sortie}'.")
# Exemple d'utilisation
cfichier_sortie = "C:/Users/Utilisateur/Desktop/result.ods"
ajouter_colonne_avant_a(cfichier_sortie)
# Fonction pour lire la colonne d'un fichier ODS
def lire_colonne(fichier, acolonne_index):
ods = load(fichier)
tables = ods.getElementsByType(Table)
texte = []
for row in tables[0].getElementsByType(TableRow):
cells = row.getElementsByType(TableCell)
col_index = 0
for cell in cells:
repeated = int(cell.getAttribute("numbercolumnsrepeated") or 1)
if col_index <= acolonne_index < col_index + repeated:
cell_text = ''.join([str(p) for p in cell.getElementsByType(P)])
if cell_text.strip():
texte.append(cell_text.strip())
col_index += repeated
return ', '.join(texte)
# Fonction pour rechercher tous les fichiers contenant "-AZE.ods" dans leur nom
def rechercher_fichiers_ods(repertoire):
fichiers_trouves = []
for root, dirs, files in os.walk(repertoire):
for file in files:
if fnmatch.fnmatch(file, '*-AZE.ods'):
fichiers_trouves.append(os.path.join(root, file))
return fichiers_trouves
# Fonction pour écrire les résultats dans une colonne spécifique d'un fichier ODS
def ecrire_resultat_dans_colonne(repertoire, afichier_sortie, acolonne_index):
fichiers = rechercher_fichiers_ods(repertoire) # Recherche des fichiers
# Charger le fichier ODS existant
if os.path.exists(afichier_sortie):
ods_sortie = load(afichier_sortie)
else:
ods_sortie = OpenDocumentSpreadsheet() # Créer un nouveau fichier si nécessaire
tables = ods_sortie.getElementsByType(Table)
if not tables:
table = Table()
ods_sortie.spreadsheet.addElement(table)
else:
table = tables[0] # Sélectionner la première table
# Vérifier et ajouter une colonne avant la colonne A
new_column = TableColumn()
table.insertBefore(new_column, table.getElementsByType(TableColumn)[0] if table.getElementsByType(TableColumn) else None)
# Ajouter les résultats dans la nouvelle colonne
for fichier in fichiers:
texte = lire_colonne(fichier, acolonne_index)
if texte:
# Ajouter une nouvelle ligne ou trouver la première ligne vide
rows = table.getElementsByType(TableRow)
if not rows:
new_row = TableRow()
table.addElement(new_row)
new_cell = TableCell()
new_cell.addElement(P(text=texte))
new_row.addElement(new_cell)
else:
# Trouver la première ligne vide pour ajouter le texte
for row in rows:
cells = row.getElementsByType(TableCell)
if len(cells) < 1: # Si la ligne n'a pas de cellules
new_cell = TableCell()
new_cell.addElement(P(text=texte))
row.addElement(new_cell)
break
else:
# Si aucune cellule n'est vide, ajouter une nouvelle ligne
new_row = TableRow()
table.addElement(new_row)
new_cell = TableCell()
new_cell.addElement(P(text=texte))
new_row.addElement(new_cell)
# Sauvegarder les modifications dans le fichier
ods_sortie.save(fichier_sortie)
print(f"Résultats ajoutés avec succès dans le fichier '{fichier_sortie}'.")
# Exemple d'utilisation : recherche de fichiers dans un répertoire spécifique
repertoire_de_recherche = "C:/Users/Utilisateur/Desktop/"
fichier_sortie = "C:/Users/Utilisateur/Desktop/result.ods"
colonne_index = 10
ecrire_resultat_dans_colonne(repertoire_de_recherche, fichier_sortie, colonne_index) |
Partager