1. Produtos
  2.   Planilha
  3.   Python
  4.   Xlwings
 
  

API Python de código aberto para Planilhas Google

Biblioteca Python que facilita a chamada de Python a partir do Excel e vice-versa.

Xlwings é uma API python de código aberto para manipular o formato de arquivo do Excel. Usando a API, você pode automatizar o Excel a partir do python para produzir relatórios, escrever UDFs (funções definidas pelo usuário), escrever macros e controlar o Excel remotamente. Além disso, a API permite manipular estruturas de dados como células, listas, intervalos, matrizes NumPy, quadros de dados panda e séries panda.

O Xlwings requer a instalação do Microsoft Excel, então tudo funciona no Windows e no macOS, exceto que as UDFs funcionam apenas no Windows.

Previous Next

Introdução ao Xlwings

Você precisa ter o Python 3.5 ou superior instalado em seu sistema para executar o xlwings sem problemas. A maneira recomendada de instalar via PIP. Por favor, use o seguinte comando.

Instale o Xlwings via comando PIP

pip install xlwings

Instale o Xlwings via Conda

conda install xlwings

Interagir com o Excel a partir do Python

A API Xlwings permite manipular planilhas da Microsoft usando Python. Usando a API, você pode se conectar a uma pasta de trabalho existente ou criar uma nova usando o método xlwings.Book(). Você pode ler/gravar valores de e para intervalos, expandir intervalos, converter tipos de dados facilmente. Além disso, você pode adicionar o gráfico Matplotlib e Plotly como imagens em suas pastas de trabalho do Excel.

Obter Dimensões de Gamas do Excel Dinamicamente através do Python

sheet = xw.Book().sheets[0]
sheet['A1'].value = [[1,2], [3,4]]
range1 = sheet['A1'].expand('table')  # or just .expand()
range2 = sheet['A1'].options(expand='table')
range1.value
[[1.0, 2.0], [3.0, 4.0]]
range2.value
[[1.0, 2.0], [3.0, 4.0]]
sheet['A3'].value = [5, 6]
range1.value
[[1.0, 2.0], [3.0, 4.0]]
range2.value

Chamar Python do Excel

A biblioteca de planilhas de código aberto Xlwings permite que os desenvolvedores de software se comuniquem com o Python via Excel. Você pode chamar funções python dentro do seu Excel usando o botão Executar do Suplemento Xlwings Excel ou usando a função RunPython VBA. O bom de usar o Suplemento do Excel é que você não precisa que suas pastas de trabalho sejam habilitadas para macro e você pode salvá-lo como xlsx.

Use Python Script para inserir códigos R no Microsoft Excel

import tempfile
import segno
import xlwings as xw
# Update this with the name of your workbook
book = xw.Book('qr.xlsx')
sheet = xw.sheets[0]
# Update this with the starting cell of your URLs
start_cell = sheet['A1']
urls = start_cell.options(expand='down', ndim=1).value
# Loop through each URL and generate the QR code
for ix, url in enumerate(urls):
    # Generate the QR code
    qr = segno.make(url)
    with tempfile.TemporaryDirectory() as td:
        # Save the QR code as a temporary svg file. If you are on macOS, use pdf
        # instead and if you don't have Microsoft 365, you may have to use png
        filepath = f'{td}/qr.svg'
        qr.save(filepath, scale=5, border=0, finder_dark='#15a43a')
        # Insert the QR code to the right of the URL
        destination_cell = start_cell.offset(row_offset=ix, column_offset=1)
        sheet.pictures.add(filepath,
                           left=destination_cell.left,
                           top=destination_cell.top)

Funções definidas pelo usuário (UDFs) no Excel usando Python

A biblioteca Xlwings oferece aos desenvolvedores a capacidade de escrever funções definidas pelo usuário (UDFs) dentro do formato de arquivo do Microsoft Excel programaticamente. Atualmente, as UDFs estão disponíveis apenas no Windows. A API permite o uso de funções simples, número de dimensões de matriz, fórmulas dinâmicas de matriz, fórmulas arrya com NumPy e muito mais.

Como chamar Marcos via RunPython no Microsoft Excel

import xlwings as xw
@xw.sub
def my_macro():
    """Writes the name of the Workbook into Range("A1") of Sheet 1"""
    wb = xw.Book.caller()
    wb.sheets[0].range('A1').value = wb.name
 Português