python xlwings - 复制和粘贴范围
python xlwings - copy and paste ranges
我在这个网站上的第一个问题。
我在 python 2.7 中使用 xlwings。我想将范围 'A1:A6' 中的值从 Sheet1 复制到 Sheet2 中的单元格 'A1:A6'。我的代码如下:
> my_range = Range('Sheet1','A1:A6').value
>
> Range('Sheet2','A1:A6').value = my_range
但是,当我 运行 这段代码时,它将 my_range
的值放入 Sheet 2 上的单元格 'A1:F1' 而不是 'A1:A6' 中的单元格Sheet2.
列(以及行)作为简单 ("horizontal") 列表返回,请参阅文档 here。为什么?首先,它模仿了 numpy 一维数组的行为。其次,它通常是你想要的,例如您可以直接遍历列或检查值是否存在,而无需先解压缩嵌套列表。
现在,在你的情况下,你显然想要保留你可以做的二维形状(再次类似于 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.9.0 开始,语法更改为:
import xlwings as xw
wb = xw.Book('mybook.xlxs')
my_values = wb.sheets['Sheet1'].range('A1:A6').options(ndim=2).value
wb.sheets['Sheet2'].range('A1:A6').value = my_values
对于任何有兴趣进行包含源格式的复制粘贴的人,您可以使用 api,如图所示:
import xlwings as xw
wb = xw.Book('mybook.xlxs')
sht = wb.sheets['Sheet1']
sht2 = wb.sheets['Sheet2']
sht.range('A1:A6').api.copy
sht2.range("A1").api.select
sht2.api.paste
wb.app.api.CutCopyMode=False
我在这个网站上的第一个问题。
我在 python 2.7 中使用 xlwings。我想将范围 'A1:A6' 中的值从 Sheet1 复制到 Sheet2 中的单元格 'A1:A6'。我的代码如下:
> my_range = Range('Sheet1','A1:A6').value
>
> Range('Sheet2','A1:A6').value = my_range
但是,当我 运行 这段代码时,它将 my_range
的值放入 Sheet 2 上的单元格 'A1:F1' 而不是 'A1:A6' 中的单元格Sheet2.
列(以及行)作为简单 ("horizontal") 列表返回,请参阅文档 here。为什么?首先,它模仿了 numpy 一维数组的行为。其次,它通常是你想要的,例如您可以直接遍历列或检查值是否存在,而无需先解压缩嵌套列表。
现在,在你的情况下,你显然想要保留你可以做的二维形状(再次类似于 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.9.0 开始,语法更改为:
import xlwings as xw
wb = xw.Book('mybook.xlxs')
my_values = wb.sheets['Sheet1'].range('A1:A6').options(ndim=2).value
wb.sheets['Sheet2'].range('A1:A6').value = my_values
对于任何有兴趣进行包含源格式的复制粘贴的人,您可以使用 api,如图所示:
import xlwings as xw
wb = xw.Book('mybook.xlxs')
sht = wb.sheets['Sheet1']
sht2 = wb.sheets['Sheet2']
sht.range('A1:A6').api.copy
sht2.range("A1").api.select
sht2.api.paste
wb.app.api.CutCopyMode=False