Xlwings - 添加列

Xlwings - adding columns

我正在使用 xlwings 并尝试对两个单元格 A1 + B1 求和,并将输出输入第三个单元格 C1。我想对范围 (A1->A9) + (B1->B9) 执行此操作,并将它们写入单元格 (C1->C9)。我当前的命令是 Range('C3').value = [sum(x) for x in zip(Range('A3:A9').value, Range('B3:B9').value)] 这个求和值正确,但答案水平写到单元格 C3-I3。我知道命令 Range('A1').value = [[1],[2],[3],[4],[5]] 会垂直列出列表的元素,但我不确定如何将其合并到我的命令中。

如有任何帮助,我们将不胜感激

打开 issue 让这更容易。对于简单列表,您可以执行以下操作(请注意,在 Python 2 上,您不需要 list around zip:

Range('C3').value = list(zip([sum(x) for x in zip(Range('A3:A9').value,
                              Range('B3:B9').value)]))

如果你安装了numpy,同样可以这样实现:

import numpy as np
Range('C3').value = (Range('A3:A9', asarray=True).value + 
                     Range('B3:B9', asarray=True).value)[:,np.newaxis]

要使值在 Excel 中垂直打印出来,您只需将它们隐藏在列表中,最终得到列表的列表,就像您描述的那样。

from xlwings import Workbook, Range
wb = Workbook('example.xlsx')
a_col = Range('A1').vertical.value # or Range('A1:A9').value if you wish
b_col = Range('B1').vertical.value
c_col = zip(a_col, b_col)
c_col = [[sum(x)] for x in c_col]  # use '[]' here inside of list constructor
Range('C1').value = c_col
wb.close()

试试这个代码:

import xlwings as xw
sht = xw.Book().sheets[0]
sht.range('C3').options(transpose=True).value \
=[sum(x) for x in zip(sht.range('A3:A9').value, sht.range('B3:B9').value)]