gpt4 book ai didi

python - 使用 Python 将自动筛选应用到工作表

转载 作者:太空宇宙 更新时间:2023-11-03 20:04:12 24 4
gpt4 key购买 nike

我尝试将自动筛选器应用于现有工作表,但该过程在自动筛选器行上​​不断失败。我在网上做了很多研究,但找不到为什么我的方法不起作用或是否有其他方法。有人可以帮忙吗? (P.S.我也尝试过使用 win32com [示例:ws_win32.AutoFilter()],但这也不起作用)

我的示例代码:

def _set_autofilter(self):
wb_xlsw = xlsxwriter.Workbook('ExistingWorkbook.xlsb')
ws_xlsw = wb_xlsw.get_worksheet_by_name('Data')
ws_xlsw.autofilter('A1:D19904')

最佳答案

您只需留在 win32com 内即可实现此目的:

data = [{"test1": 1, "test2": 1}, {"test1": 2, "test2": 2}, {"test1": 3, "test2": 3}, {"test1": 4, "test2": 4}]

import win32com.client as win32
def openExcel():

xl = win32.gencache.EnsureDispatch('Excel.Application')
wb = xl.Workbooks.Add()
ws = wb.Sheets(1)
xl.Visible = True

return ws

def print2Excel(datapoint:dict, ws):
print(datapoint)

const = win32.constants #.Insert()-Methods keywargs are packaged into const.
ws.Range("A2:B2").Insert(const.xlShiftDown, const.xlFormatFromRightOrBelow)
ws.Cells(2,1).Value = datapoint["test1"]
ws.Cells(2,2).Value = datapoint["test2"]

def setAutoFilter(ws):
ws.Range("A:A").AutoFilter(Field=1, Criteria1=3)

def main():
ws = openExcel()
ws.Cells(1,1).Value = "test1"
ws.Cells(1,2).Value = "test2"
for datapoint in data:
print2Excel(datapoint, ws)
setAutoFilter(ws)

main()

不过,我似乎无法获得自动过滤器的标准来使用数组。ws.Range("A:A").AutoFilter(Field=1, Criteria1=[1, 3]) 将运行,但仅过滤列表中的最后一项 (3)。而 VBA 语法 ws.Range("A:A").AutoFilter(Field=1, Criteria1=Array(1, 3)) 将触发异常。

关于python - 使用 Python 将自动筛选应用到工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59068423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com