2015-06-19 717 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