2015-06-19 718 views
3

我在这个网站上的第一个问题。python xlwings - 复制和粘贴范围

我使用python 2.7的xlwings。我想将Sheet1中范围'A1:A6'中的值复制到Sheet2中的单元格'A1:A6'中。我的代码如下:

> my_range = Range('Sheet1','A1:A6').value 
> 
> Range('Sheet2','A1:A6').value = my_range 

当运行该代码,但是,它把的my_range值到细胞中“A1:F1”上,而不是细胞表2“A1:A6”在片2

回答

6

列(以及行)作为简单(“水平”)列表返回,请参阅文档here。为什么?首先,它模仿numpy 1d阵列的行为。其次,它通常是你想要的,例如您可以直接遍历列或检查值是否存在,而无需首先解压缩嵌套列表。现在

,你的情况,你会明显地要保留2D图形,你可以做(​​同样类似于numpy的)如下:

my_values = Range('Sheet1','A1:A6', atleast_2d=True).value 
Range('Sheet2','A1:A6').value = my_values 

另外请注意,你叫什么my_range而应是称为my_values,因为它包含一个列表,而不是一个xlwings Range对象。

更新:

自v0.7.0,语法改为:

my_values = Range('Sheet1','A1:A6').options(ndim=2).value 
Range('Sheet2','A1:A6').value = my_values 
+0

@费利克斯。谢谢!这工作完美,也感谢解释为什么它返回水平。这就说得通了。在发布问题之前,我阅读了文档,但我想我没有看到。我也是学习Python的新手。我正要开始学习VBA,但是我碰到了你,并且对它很感兴趣。非常好的工作,并感谢您对Python社区的贡献。 – CodeNoob

+0

顺便说一句...我试图upvote你的答案,但看起来我没有足够的声望点这样做。谢谢你。 – CodeNoob