Como integrar perfeitamente o Python ao Excel usando PyXLL
Quando não há uma função Excel para o trabalho em questão, os programadores Python recorrem ao PyXLL.
PyXLL é uma ferramenta que preenche a lacuna entre o Microsoft Excel e o Python. Ele permite integrar perfeitamente o código e a funcionalidade Python em planilhas do Excel. Com o PyXLL, o Excel se torna uma plataforma para aproveitar as bibliotecas e os recursos do Python.
PyXLL serve como um suplemento do Excel. Você pode usá-lo para escrever funções e macros Python diretamente no ambiente VBA do Excel. PyXLL então atua como intérprete e executa o código nas células do Excel, abrindo muitas possibilidades. Algumas delas incluem automatização de tarefas complexas, análise avançada de dados e visualização de dados.
Uma visão geral do PyXLL
PyXLL funciona executando um interpretador Python dentro do processo do Excel. Isso dá ao seu código Python, executado em PyXLL, acesso direto aos dados e objetos do Excel. A ferramenta é escrita em C++ e usa a mesma tecnologia subjacente do Excel. Isso significa que o código Python executado em PyXLL é normalmente muito mais rápido que o código VBA do Excel.
Instalação e configuração
Para instalar o PyXLL, acesse o site do PyXLL e baixe o complemento. Certifique-se de que a versão do Python e a versão do Excel escolhidas correspondam às instaladas em seu sistema. PyXLL está disponível apenas para a versão Windows do Excel.
Quando o download for concluído, abra um prompt de comando e execute este comando:
pip install pyxll
Você precisa ter o Pip instalado em seu sistema para que o comando acima seja executado. Em seguida, use o pacote PyXLL para instalar o complemento PyXLL:
pyxll install
O instalador perguntará se você baixou o complemento. Digite sim e forneça o caminho para o arquivo zip que contém o suplemento. Em seguida, siga as instruções na tela para concluir a instalação.
Primeiros passos com PyXLL
Depois de instalar o plugin, inicie o Excel. Antes do lançamento, um aviso aparecerá solicitando que você Iniciar avaliação ou Compre agora. A versão de teste expirará após trinta dias e você precisará adquirir uma licença para continuar usando o PyXLL.
Clique no botão Iniciar avaliação. Isso iniciará o Excel com o suplemento instalado.
Na guia Exemplo de PyXLL, clique no botão Sobre PyXLL. Isso mostrará o caminho no qual você instalou o suplemento, juntamente com os caminhos para os arquivos de configuração e de log.
O caminho que contém o arquivo de configuração é importante porque você precisará editar esse arquivo posteriormente, então anote-o.
Expondo funções Python ao Excel
Para expor uma função Python ao Excel como uma função definida pelo usuário (UDF), use o decorador @xl_func. Este decorador instrui o PyXLL a registrar a função no Excel, disponibilizando-a aos usuários.
Por exemplo, para expor uma função Pythonfibonacci() ao Excel como uma UDF, você pode usar o decorador @xl_func da seguinte forma:
from pyxll import xl_func
@xl_func
def fibonacci(n):
"""
This is a Python function that calculates the Fibonacci sequence.
"""
if n < 0:
raise ValueError("n must be non-negative")
elif n == 0 or n == 1:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)
Salve este código com a extensão .py e anote o caminho da pasta na qual você salvou o arquivo.
Agora, abra o arquivo de configuração PyXLL em um editor e role para baixo até uma linha que começa com “pythonpath”. Essa configuração normalmente é uma lista de pastas nas quais o PyXLL procurará módulos Python. Adicione o caminho para a pasta que contém o código-fonte da função Fibonacci.
Em seguida, role para baixo até “módulos” e adicione seu módulo. Por exemplo, se você salvou seu arquivo como fibonacci.py, adicione o nome "fibonacci" à lista:
Isso exporá as funções do módulo que usam o decorador @xl_func no Excel. Em seguida, volte ao Excel e, na guia Exemplo PyXLL, clique no botão Recarregar PyXLL para que as alterações no arquivo de configuração sejam sincronizadas. Você pode então chamar a função fibonacci do Python como faria com qualquer outra fórmula do Excel.
Você pode criar quantas funções precisar e expô-las ao Excel da mesma maneira.
Passando dados entre Excel e Python
PyXLL suporta o uso de bibliotecas Python externas, como Pandas. Ele permite passar dados dessas bibliotecas para Python e vice-versa. Por exemplo, você pode usar o Pandas para criar um dataframe aleatório e passá-lo para o Excel. Certifique-se de que o Pandas esteja instalado em seu sistema e experimente este código:
from pyxll import xl_func
import pandas as pd
import numpy as np
@xl_func("int rows, int columns: dataframe<index=True>", auto_resize=True)
def random_dataframe(rows, columns):
data = np.random.rand(rows, columns)
column_names = [chr(ord('A') + x) for x in range(columns)]
return pd.DataFrame(data, columns=column_names)
Você deve seguir o mesmo processo para expor este módulo e suas funções ao Excel. Em seguida, tente chamar a função random_dataframe como faria com outra fórmula do Excel:
=random_dataframe(10,5)
Você pode alterar o número de linhas e colunas conforme desejar.
Você pode passar seus dataframes predefinidos para o Excel da mesma maneira. Também é possível importar dados do Excel para o script Python usando Pandas.
Limitações do PyXLL
- Compatibilidade com Windows e Excel: PyXLL foi projetado principalmente para Windows e funciona com Microsoft Excel no Windows. Pode ter funcionalidade limitada ou problemas de compatibilidade em plataformas não Windows, pois é otimizado para ambientes Windows.
- Implantação: a implantação de planilhas com tecnologia PyXLL para usuários finais exige que eles tenham o Python instalado com dependências mínimas ou o tempo de execução do Python incluído na planilha. Isso significa que os usuários que desejam usar planilhas com tecnologia PyXLL precisam ter o Python instalado em suas máquinas.
- Curva de aprendizado: O uso eficaz do PyXLL requer algum conhecimento de programação Python e familiaridade com o modelo de objetos do Excel. Os usuários que não estão familiarizados com Python ou modelo de objeto do Excel podem precisar investir tempo aprendendo esses conceitos antes de utilizar totalmente os recursos do PyXLL.
- Custo de licença: PyXLL é um produto comercial e, dependendo do uso e dos requisitos, pode haver custos de licenciamento associados ao seu uso. O custo do uso do PyXLL depende de fatores como número de usuários, escala de implantação e acordos de licenciamento.
Você ainda deve usar funções do Excel?
Depende do que você deseja realizar. Sempre faz sentido usar funções nativas do Excel quando estiverem disponíveis. Mas, para tarefas mais complexas, que as funções integradas do Excel não conseguem realizar, PyXLL é uma excelente solução.
A biblioteca Pandas é um complemento perfeito para PyXLL com seus recursos analíticos e forte suporte para processamento de dados.