Analise extratos bancários no formato .xlsx com Python e openpyxl

Isenção de responsabilidade

Achtung! Este caso foi escrito por um iniciante: as soluções fornecidas podem ser excessivamente grosseiras e as soluções sintáticas carecem de elegância.





Em nenhum lugar da prática de um advogado há uma necessidade tão urgente de análise de dados como em casos de falência: nesses casos, às vezes é necessário analisar grandes volumes de informações de extratos bancários o mais rápido possível para encontrar transações suspeitas ou restaurar registros contábeis destruídos / ocultos / corrigidos.





Como a maioria dos extratos são fornecidos pelos bancos no formato das boas e velhas tabelas do Excel, havia o desejo de automatizar a busca das informações necessárias neles. Foi necessário desenvolver uma ferramenta que permite:





  1. Abra a tabela do Excel necessária e execute a busca linha por linha e folha por folha para o valor por 1-3 palavras-chave, sem se preocupar com as ferramentas de classificação e filtragem do próprio MO Excel. É preferível uma pesquisa linha por linha para permitir que toda a transação de interesse seja exibida e pesquisar em todas as colunas.





  2. Tendo encontrado linhas com palavras-chave, transfira seus valores para uma nova tabela junto com o número da linha correspondente.





O módulo Python openpyxl foi escolhido como ferramenta para tais operações.





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 Ao usar openpyxl, a busca por palavras-chave não diferenciava maiúsculas de minúsculas, então este problema não precisava ser resolvido.








All Articles