2016-10-30 71 views
0

我正在使用openpyxl從Python編寫一個Excel工作表,並且希望在表格中插入「spinners」。在openpyxl中使用Python創建Excel「spinners」

我到目前爲止還找不到任何東西。我也願意使用其他Python包。

如果不能這樣做,是否有另一種方法做到這一點?我正在考慮一些從Python編寫宏的方式,並以某種方式將它與Excel工作表合併在一起?

回答

1

here看來,openpyxl不支持ActiveX控件,如果工作簿由openpyxl處理,它們將被丟棄。


如果您安裝了Excel,則應通過pywin32訪問以下全部內容。

Here is a good overview可用到Excel

不同類型的控件

看來,有兩種類型的控件,可以嵌入到Excel工作表:

  • Excel的控件(年紀大了,向後兼容的Excel 5)
  • ActiveX控件(更新,更定製)

Excel中控制

的Excel自動化Worksheet對象有一個名爲Spinners方法,它本身有一個方法Add。 VBA代碼看起來像這樣(使用宏錄製生成):

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

我沒能找到編程添加這些控件的任何文件。


ActiveX控件

這些似乎是記錄here微軟的標準形式。具體而言,SpinButton控件記錄爲here

使用宏錄製,我得到如下:

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

嗯,非常感謝您的信息(+1):)只是碰巧我使用的是Mac,把Win32平臺是行不通的:/ – denvar

+0

@denvar我沒有看過openpyxl的源碼,但可以推測,因爲Excel .xlsx文件是壓縮的XML文件集,這就是openpyxl正在做的 - 解壓縮xlsx文件並解析XML內部。至少,對於你來說,做同樣的事情也許是可行的,或者甚至可能利用openpyxl的解壓縮和XML解析。 –

+0

回覆:「哦,它只是拉鍊XML,爲什麼不只是捅你自己?」如果你沒有經驗使用原始Excel文件,試圖在他們身上放入一些東西是非常不平凡的。格式遠沒有大多數人想象的那麼簡單。這就是爲什麼有像OpenPyXL,XlsxWriter和xlrd這樣的軟件包。(即使你是一位專家,依賴於你想要做什麼,它仍然很困難,你爲什麼認爲這些軟件包沒有這樣那樣的功能?)Excel自動化(如你所建議的)這種事情更好的選擇。 –

相關問題