使用 Python 和 xlwings 在 Excel 中查找 active/selected 单元格的范围

Finding Range of active/selected cell in Excel using Python and xlwings

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

如果我使用绝对引用指定单元格,例如 range(3, 2),那么一切正常。但是,一旦函数为 运行.

,我似乎无法找到所选单元格的行值和列值

我发现了很多示例,其中指定了引用,但没有指定活动单元格范围可根据用户选择而变化的示例。

我尝试了一些想法。第一个选项是尝试使用我在 v0.10.0 xlwings 文档中找到的 App.selection 但这似乎不是 return 可以使用的范围参考 - 我得到一个错误 "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

第二个想法是尝试直接从单元格选择中读取行和列,但这给了我错误 "Property object has no attribute 'row'":

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 将 active/selected 单元格的范围从 Excel 传递到 Python?如果有人能够阐明这一点,那么我将不胜感激。

谢谢!

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

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