Analysez les relevés bancaires au format .xlsx avec Python et openpyxl

Avertissement

Achtung! Ce cas a été écrit par un débutant: les solutions données peuvent être excessivement grossières, et les solutions syntaxiques manquent d'élégance.





Nulle part dans la pratique d'un avocat, il n'y a un besoin aussi urgent d'analyse des données que dans les affaires de faillite: dans de tels cas, il est parfois nécessaire d'analyser de grands volumes d'informations à partir des relevés bancaires dès que possible afin de trouver des transactions registres comptables détruits / cachés / corrigés.





La plupart des relevés étant fournis par les banques sous la forme de bonnes vieilles tables Excel, il y avait une volonté d'automatiser la recherche des informations nécessaires. Il était nécessaire de développer un tel outil qui permette:





  1. Ouvrez le tableau Excel requis et effectuez une recherche ligne par ligne et feuille par feuille de la valeur par 1-3 mots-clés, sans vous soucier des outils de tri et de filtrage de MO Excel lui-même. Une recherche ligne par ligne est préférable pour permettre l'affichage de l'ensemble de la transaction d'intérêt et la recherche dans toutes les colonnes.





  2. Après avoir trouvé des lignes avec des mots-clés, transférez leurs valeurs dans une nouvelle table avec le numéro de la ligne correspondante.





Le module Python openpyxl a été choisi comme outil pour de telles opérations.





import openpyxl 
from openpyxl import Workbook

bankstatetment = input('     ') #      
#     
obj1= input('   ') 
obj2= input('   ')
obj3= input('   ')
wb = openpyxl.load_workbook(bankstatetment) #   /
results_string_list = list() # ,        
results_stringrow_list = list() # ,        
      
      



, openpyxl - , . , , , " 1", " 2", " 3".





. : results_string_list results_stringrow_list . , , .. .





sheet = wb['1'] #    .
for row in sheet: #   
    string = ''
    for cell in row:
        string = string + str(cell.value) + ' ' #    
        string_row = str(cell.row)+ ' '#  
    if obj1 in string: 
        results_string_list.append (string) #     
        results_stringrow_list.append (string_row) #     
    if obj2 in string:
        results_string_list.append (string)
        results_stringrow_list.append (string_row)
    if obj3 in string:
        results_string_list.append (string)
        results_stringrow_list.append (string_row)
      
      



. :





wb = Workbook() #  
ws = wb.active #   
a1 = ws['A1']
a1.value = ' ' #    ""
b1 = ws['B1']
b1.value = '   ' #    "B"
      
      



, : , , , openpyxl , . , , .





a2 = ws['A2']
a3 = ws['A3']
a4 = ws['A4']
a5 = ws['A5']
...
b2 = ws['B2']
b3 = ws['B3']
b4 = ws['B4']
b5 = ws['B5']
      
      



for "" .





for i in results_string_list[0:1]:
    a2.value = i
for i in results_string_list[1:2]:
    a3.value = i
for i in results_string_list[2:3]:
    a4.value = i
for i in results_string_list[3:4]:
    a5.value = i
...
for i in results_stringrow_list[0:1]:
    b2.value = i
for i in results_stringrow_list[1:2]:
    b3.value = i
for i in results_stringrow_list[2:3]:
    b4.value = i
for i in results_stringrow_list[3:4]:
    b5.value = i
...
wb.save(' .xlsx') 
      
      



, openpyxl, , , .





PS Lors de l'utilisation d'openpyxl, la recherche de mots-clés n'était pas sensible à la casse, ce problème n'avait donc pas à être résolu.








All Articles