[PYTHON] Generieren Sie eine add-in-fähige Excel-Instanz mit xlwings

Es ist zu nisch, aber ich werde die Probleme beim Erstellen einer Excel-Instanz mit xlwings und deren Lösung vorstellen.

0. Umwelt

Überprüfen Sie unten.

1. Probleme

Verwenden Sie zum Erstellen einer Excel-Instanz mit xlwings "xw.apps.add ()" oder "xw.App ()". Diese Methode weist jedoch die folgenden Probleme auf.

Wenn Sie nur Excel öffnen, ohne die Arbeitsmappe zu öffnen (starten Sie sie über das Startmenü), wird das Add-In normal geladen.

2. Lösung

Erstellen Sie eine Excel-Instanz aus der Shell und übergeben Sie sie an xlwings, ohne "xw.apps.add ()" oder "xw.App ()" zu verwenden.

import re
import subprocess
import time
from pathlib import Path

import xlwings as xw

def get_xl_path() -> Path:
    #Eine Funktion, die den Excel-Installationspfad zurückgibt
    subprocess_rtn = (
        subprocess
        .run(['assoc','.xlsx'], shell=True, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
        .stdout.decode("utf8")
    )
    assoc_to = re.search('Excel.Sheet.[0-9]+', subprocess_rtn).group()

    subprocess_rtn = (
        subprocess
        .run(['ftype', assoc_to], shell=True, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
        .stdout.decode('utf-8')
    )
    xl_path = re.search('C:.*EXCEL.EXE', subprocess_rtn).group()

    return Path(xl_path)


def xw_apps_add_fixed() -> xw.App:
    #Funktion zum Generieren einer Excel-Instanz
    xl_path = get_xl_path()
    num = xw.apps.count
    pid = subprocess.Popen([str(xl_path),'/e']).pid

    #Warten Sie, bis es von xlwings erkannt wird
    while xw.apps.count == num:
        time.sleep(1)

    #Warten Sie, bis es bei xlwings verfügbar ist
    while True:
        try:
            xw.apps[pid].activate()
            break
        except:
            time.sleep(1)

    return xw.apps[pid]


app = xw_apps_add_fixed()

Referenz

Recommended Posts

Generieren Sie eine add-in-fähige Excel-Instanz mit xlwings
Erstellen Sie schnell eine Excel-Datei mit Python #python
Erstellen Sie eine Umgebung mit virtualenv
Erstellen Sie eine API mit Django
Erstellen Sie eine Altersgruppe mit Pandas
Erstellen Sie eine Anwendung, indem Sie mit Pygame klassifizieren
Erstellen Sie mit PySimpleGUI einen Bildverarbeitungs-Viewer
Erstellen Sie mit Django Updateview einen Update-Bildschirm
Erstellen Sie eine englische Wort-App mit Python
Erstellen Sie mit cx_Freeze eine aktualisierbare MSI-Datei
Erstellen Sie eine App, die Schüler mit Python errät
Erstellen Sie ein akademisches Programm mit Kombinationsoptimierung
Erstellen Sie eine Bildkompositions-App mit Flask + Pillow
Erstellen Sie ein Bild mit Zeichen mit Python (Japanisch)
Erstellen Sie eine AWS-GPU-Instanz, um StyleNet zu trainieren
Senden Sie eine E-Mail mit Excel in Python
Erstellen Sie schnell einen API-Server mit Python + Falcon
Excel mit Python
Erstellen Sie mit Python + Flask einen animierten lokalen GIF-Server
Führen Sie Python aus Excel VBA mit xlwings & Tutorial Supplement aus
Code-Server-Online-Umgebung (3) Starten Sie eine EC2-Instanz mit Boto3
Machen Sie einen idolartigen Tweet mit Keras LSTM (Satzgenerierung)
Eine einfache Möglichkeit, ein Importmodul mit jupyter zu erstellen
Erstellen Sie eine App, die Schüler mit der Python-GUI-Version errät
Erstellen Sie eine Zufallszahl mit einer beliebigen Wahrscheinlichkeitsdichte
Erstellen Sie eine Open AI Gym-Umgebung mit Bash unter Windows 10
Geben Sie nach dem Lesen einer Excel-Datei mit pandas read_excel ein
Erstellen Sie mit AirtestIDE eine Umgebung für die Testautomatisierung (Tipps)
Stoppen Sie eine Instanz mit einem bestimmten Tag in Boto3
Behandle Excel mit Python
Erstelle Spiele mit Pygame
Lesen Sie Excel mit openpyxl
Betreiben Sie Excel mit Python (1)
Betreiben Sie Excel mit Python (2)
Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"
Minimales Makefile und buildout.cfg, um eine Umgebung mit buildout zu erstellen
Erstellen Sie mit dem Blender 2.80-Skript eine beispielhafte spielähnliche Phase
Erstellen wir eine App, die OIDC mit Azure AD authentifiziert
Einführung in Python für VBA-Benutzer - Aufrufen von Python aus Excel mit xlwings-
Erstellen einer Todo-App mit Django ① Erstellen Sie eine Umgebung mit Docker
[Python Kivy] So erstellen Sie mit pyinstaller eine exe-Datei
Lesen einer Excel-Datei (.xlsx) mit Pandas [Python]
Ich habe versucht, einen Artikel mit SQL Alchemy auf Wiki.js zu erstellen