API Python open source per Fogli Google

Libreria Python che semplifica la chiamata a Python da Excel e viceversa.

Xlwings è un'API Python open source per la manipolazione del formato di file Excel. Utilizzando l'API puoi automatizzare excel da python per produrre report, scrivere UDF (funzioni definite dall'utente), scrivere macro e controllare Excel da remoto. Inoltre, l'API consente di manipolare strutture di dati come celle, elenchi, intervalli, array NumPy, frame di dati panda e serie panda.

Xlwings richiede l'installazione di Microsoft Excel, quindi tutto funziona su Windows e macOS tranne che le UDF funzionano solo su Windows.

Previous Next

Introduzione a Xlwings

Devi avere Python 3.5 o versioni successive installato sul tuo sistema per eseguire xlwings senza problemi. Il modo consigliato per l'installazione tramite PIP. Si prega di utilizzare il seguente comando.

Installa Xlwings tramite il comando PIP

pip install xlwings

Installa Xlwings tramite Conda

conda install xlwings

Interagisci con Excel da Python

L'API Xlwings consente di manipolare fogli di calcolo Microsoft utilizzando Python. Usando l'API puoi connetterti a una cartella di lavoro esistente o crearne una nuova usando il metodo xlwings.Book(). Puoi leggere/scrivere valori in e da intervalli, espandere intervalli, convertire facilmente tipi di dati. Inoltre, puoi aggiungere il grafico Matplotlib e Plotly come immagini nelle tue cartelle di lavoro di Excel.

Ottieni le dimensioni di Excel Ranges Dinamicamente tramite 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

Chiama Python da Excel

La libreria di fogli di calcolo Open Source Xlwings consente agli sviluppatori di software di comunicare con Python tramite Excel. Puoi chiamare le funzioni Python all'interno di Excel utilizzando il pulsante Esegui del componente aggiuntivo Xlwings Excel o utilizzando la funzione RunPython VBA. L'aspetto positivo dell'utilizzo del componente aggiuntivo di Excel è che non è necessario che le cartelle di lavoro siano abilitate per le macro e puoi salvarle come xlsx.

Utilizzare Python Script per inserire i codici R in 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)

Funzioni definite dall'utente (UDF) in Excel utilizzando Python

La libreria Xlwings offre agli sviluppatori la possibilità di scrivere funzioni definite dall'utente (UDF) all'interno del formato file di Microsoft Excel in modo programmatico. Attualmente, le UDF sono disponibili solo su Windows. L'API consente di utilizzare semplici funzioni, numero di dimensioni dell'array, formule di array dinamiche, formule arrya con NumPy e altro ancora.

Come chiamare Marcos via RunPython in 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
 Italiano