使用Python和xlwings在Excel中查找活动/选定单元格的范围

时间:2016-10-06 16:22:07

标签: python xlwings

我正在尝试在Python中编写一个简单的函数(使用xlwings),它在Excel中读取当前“活动”单元格值,然后将该单元格值写入活动单元格中下一列中的单元格。

如果我使用绝对引用指定单元格,例如范围(3,2),那么我一切正常。但是,一旦运行该函数,我似乎无法找到选择哪个单元格的行和列值。

我找到了许多指定引用的示例,但没有找到活动单元格区域可能因用户选择而异的位置。

我尝试了一些想法。第一个选项是尝试使用我在v0.10.0 xlwings文档中找到的App.selection,但这似乎没有返回可以使用的范围引用 - 我在尝试检索时遇到错误“Invalid parameter”来自'cellRange'的行:

def refTest():

import xlwings as xw

wb = xw.Book.caller()

cellRange = xw.App.selection

rowNum = wb.sheets[0].range(cellRange).row
colNum = wb.sheets[0].range(cellRange).column

url = wb.sheets[0].range(rowNum, colNum).value

wb.sheets[0].range(rowNum, colNum + 1).value = url

第二个想法是尝试直接从单元格选择中读取行和列,但这会给出错误“属性对象没有属性'行'”:

def refTest():

import xlwings as xw

wb = xw.Book.caller()

rowNum = xw.App.selection.row
colNum = xw.App.selection.column

url = wb.sheets[0].range(rowNum, colNum).value

wb.sheets[0].range(rowNum, colNum + 1).value = url

是否可以使用xlwings将活动/选定单元格的范围从Excel传递到Python?如果有人能够对此有所了解,那么我会非常感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

您必须从工作簿中获取应用程序对象。如果您想要实例化新应用,则只能直接使用xw.App。此外,selection返回一个Range对象,所以这样做:

cellRange = wb.app.selection
rowNum = cellRange.row
colNum = cellRange.column