簡體   English   中英

如何使用 win32com python 創建和編輯時間線切片器?

[英]How to create and edit timeline slicer using win32com python?

我正在嘗試使用 win32com python 創建時間線切片器。 我目前正在使用 win32com 操作 excel 數據,但在數據中,我的客戶希望我將時間線切片器的上限和下限設置為某個月份。 我用谷歌搜索了很多,我得出的結論是,我能做到的唯一方法是在 VBA 中編碼並在 python 中實現它,就像這里一樣。 我在 VBA 方面沒有經驗,我想知道是否有辦法使用 win32com python 而不是 VBA win32255DDZ6.734BDD7

編輯:

在 Excel 中使用“分配宏”后,這是關於我的時間切片器的代碼:

ActiveWorkbook.SlicerCaches("NativeTimeline_Goods_Receipt_Date").TimelineState. _
        SetFilterDateRange "01/01/2020", "30/04/2020"

現在我需要將其更改為 python 並將開始日期和結束日期分配給變量。 到目前為止,我有這個:

from win32com.client import Dispatch
excel = win32.gencache.EnsureDispatch('Excel.Application')
test_wb = excel.Workbooks.Open(test_file)
date_sl = test_wb.SlicerCaches("NativeTimeline_Goods_Receipt_Date")

顯然在 Excel 中,其中有一個程序可以記錄您單擊的任何內容,因此如果您想操作過濾器/切片器,可以右鍵單擊該元素,然后選擇“分配宏”。 然后您可以點擊離開,因為它會記錄您的點擊。 完成后,您可以通過再次選擇“分配宏”來查看它,彈出 window 將可用,您可以選擇 your_filter/slicer_name_Click ,它將為您提供 VBA 代碼。 您所要做的就是更改它,使其適合 python 格式。

更新了將 VBA 轉換為 python 代碼的答案:

通過參考鏈接,我能夠將 VBA 轉換為 python 代碼並根據您選擇的日期調整日期。

所以 VBA 代碼是這樣的:

ActiveWorkbook.SlicerCaches("NativeTimeline_Goods_Receipt_Date").TimelineState. _
        SetFilterDateRange "01/01/2020", "30/04/2020"

它的 python 版本是:

excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.DisplayAlerts = False
excel.Visible = True
test_wb = excel.Workbooks.Open(test_file, None, False)
date_sl = test_wb.SlicerCaches("NativeTimeline_Goods_Receipt_Date")
date_sl.TimelineState.SetFilterDateRange("01/01/2020", "30/04/2020")

就我而言,我需要根據我運行代碼的時間等更改要設置的日期,這樣我就可以將日期分配給一個變量並用它替換硬編碼的日期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM