用xlwings 對excel 進行篩選


最近想用xlwings 對excel 進行篩選 粗略翻了下 官方文檔 https://docs.xlwings.org/en/stable/index.html

也沒有找到相關的內容, 然后搜了下 找到了個 關於pywin32 的 帖子 https://stackoverflow.com/questions/2967949/setting-criteria-on-an-autofilter-in-pywin32

 

根據帖子 上的內容 嘗試使用api  解決了問題

# 是否篩選
if table.sheets[1].api.AutoFilterMode == True:
    # 取消篩選
    table.sheets[1].api.AutoFilterMode = False

# 篩選
table.sheets[1].range((1,1),(i,j)).api.AutoFilter(field:=int(j), Criteria1:="=1", False)

"""
上面的api 后面就是用了vba的方法
 field 是需要篩選的列
 criteria1 是條件
 最后一個false 代表不顯示下拉箭頭
 
#############################
'vba 代碼如下

Sub filter()
Dim ws As Worksheet
Dim i&, j&

Set ws = ActiveWorkbook.Worksheets(1)
MsgBox ws.AutoFilterMode

i = ws.Cells(Rows.Count, 1).End(xlUp).Row
j = ws.Cells(1, Columns.Count).End(xlToLeft).Column

Debug.Print i; j

If ws.AutoFilterMode Then
ws.AutoFilterMode = False
End If


ws.Range(ws.Cells(1, 1), ws.Cells(i, j)).AutoFilter field:=3, Criteria1:=">=5"

i = 0
For Each rngcell In [a1].CurrentRegion.SpecialCells(xlCellTypeVisible).Areas
i = i + rngcell.Rows.Count
Next rngcell

'https://blog.csdn.net/taller_2000/article/details/81269915s
'i = ws.Cells(Rows.Count, 1).End(xlUp).Row

Debug.Print "條目"; i - 1

If ws.AutoFilterMode Then
ws.AutoFilterMode = False
End If
End Sub

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM