Python 在pyWin32中设置自动筛选条件
我可以使用pyWin32设置自动过滤器,但我想知道是否可以设置默认过滤器以及语法是什么 例如,我想在年份列上设置一个过滤器,并为当前年份设置默认值Python 在pyWin32中设置自动筛选条件,python,excel,pywin32,Python,Excel,Pywin32,我可以使用pyWin32设置自动过滤器,但我想知道是否可以设置默认过滤器以及语法是什么 例如,我想在年份列上设置一个过滤器,并为当前年份设置默认值 xl = Dispatch("Excel.Application") xl.Workbooks.Open(file_path) xl.ActiveWorkbook.Worksheets(sheetname).Range("A2:A6").AutoFilter(1) xl.ActiveWorkbook.Close(SaveChanges=1) 我
xl = Dispatch("Excel.Application")
xl.Workbooks.Open(file_path)
xl.ActiveWorkbook.Worksheets(sheetname).Range("A2:A6").AutoFilter(1)
xl.ActiveWorkbook.Close(SaveChanges=1)
我在网上查阅了关于pywin32的文档,也查阅了微软的网站,但没有找到如何将MS语法翻译成pywin32的方法
Range("A2:A6").AutoFilter Field:=1, Criteria1:=rng.Value
我遇到了同样的问题,经过一点实验后,我发现可以在
Columns
属性上设置一个范围。因为我想对A到I列进行自动筛选,所以我设置了如下条件:
MyYearRange.AutoFilter(Field=1, Criteria1="2012")
xl.active工作簿.ActiveSheet.Columns(“A:I”).AutoFilter(1)
这对我有用。我假设您希望对B列到F列进行筛选,因为自动筛选仅对列启用。也许以下标准适用于您:
xl.active工作簿.ActiveSheet.Columns(“B:F”).AutoFilter(1)
Alok相当神秘的文档可在以下位置获得: 每个Excel VBA参数都转换为pywin32中的函数参数。例如,如果要过滤所有不等于“2012”的年份,可以通过如下指定Criteria1参数来实现:
MyYearRange.AutoFilter(Field=1, Criteria1="2012")
我只是想为那些想使用不同但相似解决方案的未来人提供一个答案。不过这要简单得多。您将需要安装xlwings和pywin32。使用xlwings,您可以访问pywin32的api函数,这在其自身函数的基础上为您提供了很大的灵活性
import xlwings
#puts the excel window into focus or opens it up. It evens work on csv files.
wb = xlwings.Book('C:\\Users\\yourusername\\Desktop\\Excel.xlsx')
#Choose the sheet you want to focus
datasht = wb.sheets['Sheet1']
#Pay attention to where you the .api. part. It matters if you are trying to achieve something specific. AND MAKE SURE to that you follow case-sensensitive typing for 'Range' and 'Autofilter'.
datasht.api.Range('A1:J10').AutoFilter(3,'SomeFilterValue')
不幸的是,我不知道如何引起其余的争论。您几乎只需要找出如何将参数转换为python。我确实让它工作了,但我不确定你是否会遇到任何问题。这是一个可行的方法
datasht.api.Range('A1:J10').AutoFilter(3,'filtervalue1',2,'filtervalue1',1)
如果需要调用操作员参数,请特别阅读第二个链接:
如果需要在同一列中选择多个过滤器值:
ws.Columns('ColumnLetter:ColumnLetter').AutoFilter(column_number, value_list, 7)
发件人:xlFilterValues
|7
|筛选值此功能:
Excel = win.Dispatch("Excel.Application")
Excel.visible = True
wb = Excel.Workbooks.open('path to xlsx')
ws = wb.Worksheets(1)
#use Range("A:A") for autofilter
ws.Columns("A:I").AutoFilter(1,"criteria string")
这将对列A应用自动筛选,条件1为“条件字符串”Hi。谢谢你。我来看看!