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)
Hmm, vielen Dank für die Info (+1) :) passiert einfach, dass ich mac bin mit dem win32 wird nicht funktionieren:/ – denvar
@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. –
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. –