2016-10-30 6 views
0

Ich schreibe ein Excel-Blatt von Python, mit openpyxl, und möchte "spinners" in das Blatt einfügen.Erstellen von Excel "Spinner" mit Python in openpyx

Ich konnte bisher nichts dazu finden. Ich bin offen für die Verwendung anderer Python-Pakete.

Wenn dies nicht möglich ist, gibt es eine andere Möglichkeit, dies zu tun? Ich habe etwas in der Art gedacht, ein Makro aus Python zu schreiben und irgendwie mit dem Excel-Blatt zu verschmelzen?

Antwort

1

Es scheint von here, dass openpyxl ActiveX-Steuerelemente nicht unterstützt, und sie werden verworfen, wenn die Arbeitsmappe von openpyxl verarbeitet wird.


Wenn Sie Excel installiert haben, sollten alle folgenden über pywin32 erreichbar sein.

Here is a good overview zu den verschiedenen Arten von Kontrollen zur Verfügung zu Excel

Es scheint, dass es zwei Arten von Kontrollen, die in eine Excel-Arbeitsblatt eingebettet werden können:

  • Excel Kontrollen (ältere, rückwärtskompatibel zu Excel 5)
  • ActiveX-Steuerelemente (neuere und anpassbar)

Excel steuert

Die Excel Automation Worksheet Aufgabe, ein Verfahren hat Spinners genannt, die selbst eine Methode Add hat. Der VBA-Code sieht wie folgt aus (erzeugt das Macro Recorder verwenden):

ActiveSheet.Spinners.Add(816, 36, 92.25, 49.5) 

ich keine Dokumentation programmatisch diese Kontrollen zu finden schaffte hinzufügen.


ActiveX-Steuerelemente

Diese erscheinen die Standard-Microsoft Forms here dokumentiert sein. Insbesondere ist das SpinButton-Steuerelement dokumentiert here.

den Makro-Recorder verwenden, erhalte ich folgendes:

ActiveSheet.OLEObjects.Add(ClassType:="Forms.SpinButton.1", Link:=False, _ 
    DisplayAsIcon:=False, Left:=633, Top:=47.25, Width:=58.5, Height:= _ 
    62.25) 
+0

Hmm, vielen Dank für die Info (+1) :) passiert einfach, dass ich mac bin mit dem win32 wird nicht funktionieren:/ – denvar

+0

@denvar Ich habe nicht auf die Quelle von openpyxl zugegriffen, aber vermutlich seit Excel .xlsx Dateien sind komprimierte Sätze von XML-Dateien, das ist, was openpyxl tut - Dekomprimierung der xlsx-Datei und Parsing der XML innerhalb. Vielleicht ist es genauso machbar, das Gleiche zu tun, oder vielleicht ist es sogar möglich, openpixls Dekomprimierung und XML-Analyse zumindest zu nutzen. –

+0

Re: "Oh, es ist nur XML gezippt, warum nicht einfach herumstochern?" Wenn Sie nicht mit rohen Excel-Dateien arbeiten, ist der Versuch, etwas in sie hineinzuschieben, * höchst * nichttrivial. Das Format ist bei weitem nicht so einfach wie die meisten Leute sich vorstellen. Aus diesem Grund gibt es Pakete wie OpenPyXL, XlsxWriter und xlrd.(Selbst wenn Sie ein Experte sind, je nachdem, was Sie tun möchten, ist es immer noch schwierig. Warum glauben Sie, dass diese Pakete nicht solche und/oder solche Funktionen haben?) Excel-Automatisierung (wie Sie vorgeschlagen haben) ist weit bessere Wahl für diese Art von Sache. –

Verwandte Themen