Python 如何使用pywin32在excel文件中高效地将值填充到一列?

Python 如何使用pywin32在excel文件中高效地将值填充到一列?,python,excel,pywin32,Python,Excel,Pywin32,我知道我可以像Pywin32一样使用数组中的源来填充行 import win32com.client as win32 excel = win32.gencache.EnsureDispatch('Excel.Application') excel.Visible = True wb = excel.Workbooks.Add() ws = wb.Worksheets('Sheet1') ws.Range("A4:D4").Value = [i for i in range(1,5)] 但在单

我知道我可以像Pywin32一样使用数组中的源来填充行

import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = True
wb = excel.Workbooks.Add()
ws = wb.Worksheets('Sheet1')
ws.Range("A4:D4").Value = [i for i in range(1,5)]
但在单列的情况下,当我这样尝试时

ws.Range("A1:A4").Value = [i for i in range(1,5)]
我在“A”列中得到了四个1,但我想要的是“A”列中的1、2、3、4

是否有类似的方法来处理列

如果没有,一次填充多个单元格的最有效方法是什么?

您可以这样做:

for col_idx, i in enumerate(xrange(1,5)):
    ws.Cells(1, col_idx+1).Value = i
你可以做:

for col_idx, i in enumerate(xrange(1,5)):
    ws.Cells(1, col_idx+1).Value = i

你需要做的是

import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = True
wb = excel.Workbooks.Add()
ws = wb.Worksheets('Sheet1')
ws.Range("A1:A4").Value = [[i] for i in range(1,5)]
您之前所做的是尝试将[1,2,3,4]放入一列。但是,当它转换为excel格式时,数组总是转换为行。因此,当您创建二维数组时,您将创建一个行数组,这就是excel查看列的方式。所以你想要的是[1],[2],[3],[4]。这就是上面代码生成的


编辑:我意识到这可能不是世界上最好的措辞。如果你不明白,就问我,我会尽力给出更好的解释。

你需要做的是

import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = True
wb = excel.Workbooks.Add()
ws = wb.Worksheets('Sheet1')
ws.Range("A1:A4").Value = [[i] for i in range(1,5)]
您之前所做的是尝试将[1,2,3,4]放入一列。但是,当它转换为excel格式时,数组总是转换为行。因此,当您创建二维数组时,您将创建一个行数组,这就是excel查看列的方式。所以你想要的是[1],[2],[3],[4]。这就是上面代码生成的


编辑:我意识到这可能不是世界上最好的措辞。如果你不明白,就问我,我会尽力给出更好的解释。

谢谢你的回答,我知道这一点。但是,如果列太长,它是否有效?无论哪种方式,您都有一个
for
循环。谢谢您的回答,我知道这种方式。但是如果列很长,它是否有效?无论哪种方式,都有一个
for
循环。