我正在尝试在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?如果有人能够对此有所了解,那么我会非常感激。
谢谢!
答案 0 :(得分:1)
您必须从工作簿中获取应用程序对象。如果您想要实例化新应用,则只能直接使用xw.App
。此外,selection
返回一个Range对象,所以这样做:
cellRange = wb.app.selection
rowNum = cellRange.row
colNum = cellRange.column