<p>您只需留在win32com中即可实现以下目标:</p>
<pre><code>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()
</code></pre>
<p>不过,我似乎无法获得自动筛选使用数组的条件。
ws.Range(“A:A”).AutoFilter(Field=1,Criteria1=[1,3])将运行,但只对列表(3)中的最后一项进行筛选。
而VBA语法ws.Range(“A:A”).AutoFilter(Field=1,Criteria1=Array(1,3))将触发异常</p>