python xlwings - 复制和粘贴范围
问题描述:
我在这个网站上的第一个问题。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
答
列(以及行)作为简单(“水平”)列表返回,请参阅文档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
@费利克斯。谢谢!这工作完美,也感谢解释为什么它返回水平。这就说得通了。在发布问题之前,我阅读了文档,但我想我没有看到。我也是学习Python的新手。我正要开始学习VBA,但是我碰到了你,并且对它很感兴趣。非常好的工作,并感谢您对Python社区的贡献。 – CodeNoob
顺便说一句...我试图upvote你的答案,但看起来我没有足够的声望点这样做。谢谢你。 – CodeNoob