如何使用pywin32在excel文件中有效地填充值到单个列?

我知道我可以使用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,

有没有类似的方式来处理列?

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

你需要做的是

 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格式时,数组总是被转换成一行。 所以,当你创build一个二维数组时,你将创build一个行数组,这就是excel如何查看一个列。 所以你想要的是[[1],[2],[3],[4]]。 以上代码就是这样产生的。

编辑:我意识到这可能不是世界上最好的措辞。 如果你没有得到它只是问,我会尝试提出一个更好的解释。

你可以这样做:

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