如何使用Python在Excel中进行过滤

2024-04-25 22:27:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python自动化启用宏的excel工作簿过程。你知道吗

如果可能的话,我想使用win32com,但如果需要,我愿意切换到其他库。一旦我打开工作簿,在我需要的工作表上,就已经有了应用自动筛选的数据。我只需要对一列进行筛选,以便在运行宏时使数据对宏可用。你知道吗

我使用wb.RefreshAll()从现有连接导入数据。你知道吗

最后,我需要将用户输入的值传递给过滤器,因为每次自动化运行时它都会不同。你知道吗

我在网上找不到任何帮助。大多数解决方案都涉及将选定数据复制到数据框等,但我需要将过滤后的数据保留在工作表中,以便宏可以使用它。你知道吗

任何建议都是有用的!谢谢您!!你知道吗


Tags: 数据用户过滤器过程解决方案excel建议win32com
1条回答
网友
1楼 · 发布于 2024-04-25 22:27:39

我最近编写了一个Python脚本来自动执行宏。基本上,我们的想法是批量编辑一组.doc文件,并为所有文件运行一个宏,而不必逐个打开它们。你知道吗

首先: 您要运行的宏是什么? 第二: 你需要什么样的数据使其可见,这是什么意思?你知道吗

要开始,请尝试以下方法:

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

import win32com.client as win32
def openExcel():

    xl = win32.gencache.EnsureDispatch('Excel.Application')
    wb = xl.Workbooks.Add()
    #wb = xl.Workbooks.Open(filepath)
    ws = wb.Sheets(1) #The worksheet you want to edit later
    xl.Visible = True

    return ws

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

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

ws = openExcel() #<- When using Open(filepath), pass the whole filepath, starting at C:\ or whatever drive.
for datapoint in data:
    print2Excel(datapoint, ws)

这展示了如何在win32com中使用Excel对象的一些基础知识

相关问题 更多 >