使用Python使用Range函数创build数组并写入excel列

我想创build一个数据容器,在我的python脚本(基于计算),然后写在excel使用win32com客户端和range()函数的列中。 我可以成功做到这一行,但不能做一列。 我基本上想要做的硬编码代码如下所示:

import win32com.client as win32 from win32com.client import Dispatch Excel=Dispatch('Excel.Application') wb = Excel.ActiveWorkbook ws = wb.ActiveSheet data_container = [5],[6],[7],[8],[9] ws.Range(ws.Cells(11,9),ws.Cells(15,9)).Value = (data_container) 

对我来说,棘手的部分是创build一个data_container,我可以在飞行中创build。 我知道关于元组,数据字典和列表的stackoverflow上有很多,但我不能解决它,并感到困惑(如果我看到警告“元组是不可变的”一次!!!!!!)。 每当我创build如下所示的东西时,它只是输出所有单元格中的第一个项目(即在所有单元格的下面填充5)。

 data_container = [] data_container.append(5) data_container.append(6) data_container.append(7) data_container.append(8) data_container.append(9) ws.Range(ws.Cells(11,9),ws.Cells(15,9)).Value = (data_container) 

我可以循环并写入每个单元格,但是由于时间限制,不想这样做。 我知道有可能使用其他python插件,但我希望这可以在许多计算机上使用,不一定有所有这些插件,可以防止人们使用我的脚本………我喜欢简单使用win32com设置,并有大多数项目工作除了这一点。 理想情况下,我想有一个字典/列表/matrix/数组中存储的列数……并能够写入一个范围引用数据容器的某个部分。 例如:

 ws.Range(ws.Cells(11,9),ws.Cells(15,9)).Value = (data_container[0]) 

data_container [0]包含[5],[6],[7],[8],[9] ……

我想要做的最终目的是将多个列(不一定按顺序)读入数据容器,进行修改,然后写回多个列(不一定按顺序)。

我非常感谢所有的构build块,目前可能是堆栈溢出,我只是无法把它们拉到一起,我试图把这一切都解决了。 任何帮助表示赞赏。

我很幸运能从工作中得到一些人的帮助,但也许对其他人有用处。 下面似乎工作。 问题是创build数组/列表结构。 我认为从根本上来说,我已经创build了一个3D数组/列表? 下面的代码创build这个结构全部为5,然后修改只有两个单元格,并写回到两个单独的列。 这对其他人可能是显而易见的,但对我不是。

 import win32api import os import sys import win32com.client as win32 from win32com.client import Dispatch if __name__ == "__main__": Excel=Dispatch('Excel.Application') wb = Excel.ActiveWorkbook ws = wb.ActiveSheet data_work = [[[5] for i in range(10)] for j in range(10)] data_work[0][2] = [500] data_work[1][4] = [45] ws.Range(ws.Cells(1,9),ws.Cells(9,9)).Value = (data_work[0]) ws.Range(ws.Cells(1,12),ws.Cells(9,12)).Value = (data_work[1])