我知道我可以使用类似
的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”栏中得到4分1,但我想要的是“A”栏中的1,2,3,4
有没有类似处理专栏的方法?
如果不是,一次填充多个细胞的最有效方法是什么?
答案 0 :(得分:1)
您需要做的是
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格式时,数组始终会转换为行。因此,当您创建2D数组时,您将创建一个行数组,这是excel查看列的方式。所以你想要的是[[1],[2],[3],[4]]。这就是上面代码生成的内容。
编辑:我意识到这可能不是世界上最好的措辞。如果你不理解,我会尝试提出更好的解释。答案 1 :(得分:0)
你可以这样做:
for col_idx, i in enumerate(xrange(1,5)):
ws.Cells(1, col_idx+1).Value = i