Pular para conteúdo

Extraindo e modificando informação do Excel

Este tutorial ensinará a você como automatizar a coleta de informação e atualização de celulas do Excel. Este tutorial pode ser usado como base para outros projetos de automação no Excel.

Neste tutorial iremos abordar como alterar valores na planilha em 3 cenários: Quando já conhecemos a posição (Linha e coluna) do dado que iremos atualizar, Quando queremos alterar somente um valor na última linha e, por último, quando queremos editar uma célula utilizando condicional de programação.

Preparando seu roteiro

Criando folder

Primeiramente vamos criar nossa estrutura de automação na pasta <MARVIN_HOME>\script.

Como não usaremos visão computacional, não precisamos criar a pasta assets, para salvar imagens de template.

excel\
    script.mvn

No Windows Explorer, vá para a pasta <MARVIN_HOME>\script - normalmente na instalação padrão MARVIN_HOME é definido como C:\Program Files\Marvin - e crie uma nova pasta chamada excel.

Folder do Script

Criando arquivo Excel

Para o nosso exemplo estaremos usando este arquivo .xlsx:

Arquivo xlsx

Para o correto funcionamento é importante a utilização do arquivo Excel utilizado no exemplo. Você pode baixa-lo no link Arquivo Teste

E coloque ele na pasta C:\\Program Files\\Marvin\\script\\excel\\arquivo-teste.xlsx

Nosso objetivo

Temos que alterar a tabela para adicionar a nota restante na posição ``

Script de Automação

Abra um arquivo excel.xlsx

Agora podemos começar com nossa automação pelo Excel.

Primeiro de tudo, vamos abrir o Excel. Para fazer isso, vamos adicionar este código dentro do nosso arquivo script.mvn.

script.mvn
excel.open('C:\\Program Files\\Marvin\\scripts\\excel\\arquivo-teste.xlsx') # Abra o Excel

Agora vamos iniciar nossa automação, executando o script excel. Para obter mais informações sobre como executar um script, consulte Running Scripts em Getting Started.

Esse script abrirá uma nova instância do Excel . Note que, ao rodar a automação, uma aba do Excel não aparecerá em tela. Isso é devido ao Marvin por padrão executar o Excel no modo invisível.

A função excel.open() aceita como parametro excel_visible, que inicialmente vem como False. Portanto ao passarmos True nesse parâmetro, dessa forma:

script.mvn
excel.open('C:\\Program Files\\Marvin\\scripts\\excel\\arquivo-teste.xlsx', excel_visible=True) # Abra o Excel

Podemos visualizar o Excel e assim, caso necessário, acompanhar a automação.

Homepage Excel

Editando a planilha

Primeiro vamos editar a planilha quando ja sabemos a localização da celula que queremos mexer.

A Nota 2 do João deveria ser um 9. Já que sabemos que sua posição na tabela sempre sera C2 vamos chamar a função excel.update_cell.

script.mvn
excel.update_cell($worksheet, "9", "C2") # Atualiza celula

Por padrão a função excel.open() gera um parametro chamado $worksheet que é a pagina do excel que vamos estar manuseando. No nosso caso apenas temos a worksheet Planilha1 entao nao precisamos nos preocupar.

Worksheet Excel

Editando ultimo elemento

Para adicionar a Nota 2 de Jacinto vamos utilizar a função excel.get_dimensions(), que ira nos retornar o parametro $last_cell. No nosso exemplo a ultima celula do excel coincide com a Nota 2 de Jacinto. Logo vamos utilizar ela para atualizar a sua nota em branco para um 8.

script.mvn
excel.get_dimensions($worksheet) # Coleta as dimensões
excel.update_cell($worksheet, "8", $last_cell) # Atualiza celula

Editando de forma condicional

Agora que ja temos o começo e o final da tabela nós podemos tambem fazer uma varredura em busca de um elemento especifico. Vamos trocar as notas 5 dos alunos para um 2. Para isso vamos passar celula por celula até acharmos uma nota 5, e entao substituir por 2.

Vamos começar a partir da celula B2 (segunda linha) para evitar o cabeçalho e nomes dos alunos.

script.mvn
excel.last_line($worksheet)

for line in range(2, ($last_line) + 1):

    excel.get_cell($worksheet, f"B{line}")
    if ($values)[0][0] == 5:
        excel.update_cell($worksheet, "2", f"B{line}") # Atualiza celula

    excel.get_cell($worksheet, f"C{line}")
    if ($values)[0][0] == 5:
        excel.update_cell($worksheet, "2", f"C{line}") # Atualiza celula

Para cada linha da planilha vamos analizar a celula B e depois a C. Em caso de ser uma nota 5 nos trocamos por uma 2 utilizando um excel.update_cell().

Da forma que esta escrito, caso nosso numero de alunos aumente ainda conseguimos escalonar automaticamente o codigo, ja que a função excel.last_line() nos trara quandos alunos temos + 1 (devido ao cabeçalho).

Finalizando a automação

Após nossas 3 automações: troca sabendo posição; troca da ultima célula; troca com varredura, nós podemos salvar o excel usando a função excel.save():

script.mvn
excel.save($workbook, 'C:\\Program Files\\Marvin\\scripts\\excel\\arquivo-teste.xlsx')

Lembrando que $workbook é um parametro gerado quando chamamos a função excel.open()

E então nossa planilha terminará assim:

Worksheet Excel