Ir ao conteúdo
  • Cadastre-se

Python Automação com Python: Mala Direta


Posts recomendados

Senhores(as), Todos Bem? Estou Bem, mas preciso de ajuda rs.

 

Estou tentando criar uma automação para que me ajude no dia a dia, sou iniciante com o Python, e estou enfrentando barreiras.

Ideia: Quero fazer uma automação de MALADIRETA onde a automação leia todo o texto no doc "word", e encontre dentro dele as chaves '[]' dentro dela tera um número para sabermos do que se refere.

 

Exemplo: Prezado [1], estou indo para o estado de [2], e quero ir no restaurante [3]..

 

Preciso que ele encontre quantos '[]' tem dentro do DOC "Word", e me informe.

Depois disso, preciso que ele solicite o meu banco de dados 'Excel', onde lá contém algumas informações na planilha.

Preciso que eu selecione onde vai o que do Excel para o Word e seja salvo em PDF..

 

Exemplo Excel: 
      A      |    B                  |         C                |
1 Nome | Estado             | Restaurante       |

2 Victor | Rio de Janeiro | Restaurante01    |

3 Lucas | São Paulo       | Restaurante02    |

4 Julian | Brasilia            | Restaurante03    |
 

Exemplo do texto Salvo em PDF como deve ficar:

 

PDF01: Prezado Victor, estou indo para o estado de Rio de Janeiro, e quero ir no restaurante Restaurante01..

PDF02: Prezado Lucas, estou indo para o estado de São Paulo, e quero ir no restaurante Restaurante02..

PDF03: Prezado Julian, estou indo para o estado de Brasilia, e quero ir no restaurante Restaurante03..

 

O nome de cada PDF salvo, eu tenho que escolher a partir de qual CELULA do Excel devo salvar.

Exemplo: Pegar o nome da celula A2 em diante ou B2 em diante. e salvar uma por uma na ordem.

Conseguem me ajudar ? Fiz isso quase tudo, mas não ta como quero, e travei total rs.

 

Código Fonte em Anexo:

 

import tkinter as tk
from tkinter import filedialog
import pandas as pd
from docx import Document
import re

def contar_numeros_em_colchetes(texto):

    padrão = r'\[([0-9]+)\]'
    numeros_encontrados = re.findall(padrão, texto)


    return len(numeros_encontrados), numeros_encontrados

def ler_docx(caminho_documento):
    doc = Document(caminho_documento)
    texto = ""

    for paragrafo in doc.paragraphs:
        texto += paragrafo.text + "\n"

    return texto

def ler_excel(caminho_excel, numeros):
    dados = pd.read_excel(caminho_excel)
    for coluna in dados.columns:
        dados[coluna] = dados[coluna].apply(lambda x: substituir_colchetes(str(x), numeros))

    return dados

def substituir_colchetes(valor, numeros):
    for numero in numeros:
        valor = valor.replace(f"[{numero}]", numero)
    return valor

def salvar_em_word(dados, caminho_original, caminho_destino):
    doc_destino = Document(caminho_original)

    for paragrafo in doc_destino.paragraphs:
        for coluna in dados.columns:
            marcador = f"[{coluna}]"
            substituto = str(dados[coluna].iloc[0])
            paragrafo.text = paragrafo.text.replace(marcador, substituto)
    doc_destino.save(caminho_destino)

def abrir_seletor_arquivo_word():
    caminho_documento = filedialog.askopenfilename(filetypes=[("Documentos DOCX", "*.docx")])
    if caminho_documento:
        texto_documento = ler_docx(caminho_documento)
        quantidade, numeros = contar_numeros_em_colchetes(texto_documento)

        resultado_label.config(text=f"Quantidade de números dentro de colchetes no Word: {quantidade}\nNúmeros encontrados: {numeros}")


        abrir_seletor_arquivo_excel(numeros, caminho_documento)

def abrir_seletor_arquivo_excel(numeros, caminho_original):
    caminho_excel = filedialog.askopenfilename(filetypes=[("Arquivos Excel", "*.xlsx")])
    if caminho_excel:

        dados = ler_excel(caminho_excel, numeros)


        salvar_em_word(dados, caminho_original, "resultado_word.docx")

        resultado_label.config(text=f"Documento Word salvo como resultado_word.docx")


janela = tk.Tk()
janela.title("Substituir Colchetes em Word e Salvar em Word")

selecionar_arquivo_word_button = tk.Button(janela, text="Selecionar Arquivo Word", command=abrir_seletor_arquivo_word)
resultado_label = tk.Label(janela, text="")

selecionar_arquivo_word_button.pack(pady=10)
resultado_label.pack(pady=10)


janela.mainloop()

 

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

@Victor Lopes Umbelino Olá, bem vindo ao forum.
Nos fale em que parte no seu código ou momento do fluxo do processo, está a dificuldade/barreira/bug que você está enfrentando.
 

ps: O tkinter é usado para interfaces, recomendo você modularizar, colocando lógica e interface em arquivos .py separados.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!