Open-Source-Python-API für Google Sheets

Python-Bibliothek, die es einfach macht, Python aus Excel und umgekehrt aufzurufen.

Xlwings ist eine Open-Source-Python-API zum Bearbeiten des Excel-Dateiformats. Mit der API können Sie Excel von Python aus automatisieren, um Berichte zu erstellen, UDFs (benutzerdefinierte Funktionen) zu schreiben, Makros zu schreiben und Excel fernzusteuern. Darüber hinaus ermöglicht die API die Manipulation von Datenstrukturen wie Zellen, Listen, Bereichen, NumPy-Arrays, Panda-Datenrahmen und Panda-Serien.

Xlwings erfordert die Installation von Microsoft Excel, sodass alles unter Windows und macOS funktioniert, außer dass die UDFs nur unter Windows funktionieren.

Previous Next

Erste Schritte mit Xlwings

Sie müssen Python 3.5 oder höher auf Ihrem System installiert haben, um xlwings reibungslos auszuführen. Der empfohlene Weg zur Installation über PIP. Bitte verwenden Sie den folgenden Befehl.

Installieren Sie Xlwings über den PIP-Befehl

pip install xlwings

Installieren Sie Xlwings über Conda

conda install xlwings

Interagieren Sie mit Excel aus Python

Die Xlwings-API ermöglicht die Manipulation von Microsoft-Tabellen mithilfe von Python. Mit der API können Sie eine Verbindung zu einer vorhandenen Arbeitsmappe herstellen oder mit der Methode xlwings.Book() eine neue erstellen. Sie können Werte in und aus Bereichen lesen/schreiben, Bereiche erweitern und Datentypen einfach konvertieren. Darüber hinaus können Sie Matplotlib- und Plotly-Diagramme als Bilder in Ihre Excel-Arbeitsmappen einfügen.

Get Dimensions of Excel Ranges dynamisch über 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

Rufen Sie Python aus Excel auf

Die Open-Source-Tabellenbibliothek Xlwings ermöglicht es Softwareentwicklern, über Excel mit Python zu kommunizieren. Sie können Python-Funktionen in Ihrem Excel aufrufen, indem Sie entweder die Schaltfläche Ausführen des Xlwings Excel-Add-Ins verwenden oder die RunPython-VBA-Funktion verwenden. Das Gute an der Verwendung des Excel-Add-Ins ist, dass Ihre Arbeitsmappen nicht makrofähig sein müssen und Sie sie als xlsx speichern können.

Benutzen Sie Python Skript, um R-Codes in Microsoft Excel Excel einzufügen.

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)

Benutzerdefinierte Funktionen (UDFs) in Excel mit Python

Die Xlwings-Bibliothek gibt Entwicklern die Möglichkeit, benutzerdefinierte Funktionen (UDFs) programmatisch in das Microsoft Excel-Dateiformat zu schreiben. Derzeit sind UDFs nur unter Windows verfügbar. Die API ermöglicht die Verwendung einfacher Funktionen, der Anzahl der Array-Dimensionen, dynamischer Array-Formeln, Arrya-Formeln mit NumPy und mehr.

How to Call 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
 Deutsch