我想用定制的方法扩展openpyxl工作簿类的现有功能。我明白,通常我只是在原始类的基础上定义自己的类
class WorkbookExtended(openpyxl.Workbook):
def added_method(self):
print("Do some special stuff here")
到目前为止还不错,但我现在的问题是,我获取Excel工作簿的方法是调用加载\u工作簿(文件),它不是工作簿类的一部分,但返回一个完全实例化的工作簿对象。另一方面,工作簿类似乎没有提供基于现有对象实例化新对象的方法。 所以问题是:我如何扩展一个
编辑: 更具体地说,我加载一个现有工作簿,并希望添加一个方法,在给定的范围和工作表中搜索给定的值。我希望能够搜索精确匹配或包含搜索词的单元格值。现在我可以使用openpyxl中的现有函数来完成所有这些,但我想做的是将其添加到工作簿类中,因为这似乎是此类函数最自然的位置
from openpyxl import Workbook, load_workbook
class WorkbookExtended(Workbook):
def locate_value(self, value, range, sheet="active", strict=True):
pass # perform the search and return a list of cells
wb = load_workbook("test.xlsx")
wbe = WorkbookExtended(wb) # does not work because Workbook class doesn't
# take a workbook object as __init__ parameter
result = wbe.locate_value("foo", "A2:B10") # result contains a list of cells
# that have "foo" as value
尽管有更具体的问题描述,我仍然对解决这个问题的一般方法感到好奇。也就是说,即使有一个工作簿或工作表函数执行类似的操作,原始问题仍然存在
在类似的情况下,我使用实例变量而不是扩展类。在您的情况下,为工作簿创建一个实例变量,并在需要使用openpyxl中的函数时引用该变量,在需要使用自定义函数时引用类实例
或者,如果总是要使用类加载现有工作簿,则可以将
load_workbook
放在类init函数中相关问题 更多 >
编程相关推荐