Я определил класс следующим образом:
import openpyxl
class xlWorkbookTeX(openpyxl.Workbook):
def __init__(self, filename):
super().__init__()
self.filename = filename
...
Моя цель - расширить класс Workbook
с добавленной функциональностью (преобразование в LaTeX
таблицы), и этот класс кажется наиболее подходящим, так как он имеет все функции, которые мне нужны для работы с прилагаемыми таблицами и т. д. c.
Но, как ни странно, я не могу найти функцию для чтения в существующем xlsx
файле в инициализированном Workbook
экземпляр в классе Workbook
, хотя у него есть метод save
?!
"Официальным" способом загрузки таких данных является openpyx.load_workbook()
, который возвращает a Workbook
объект. Но как получить эти данные в моем собственном xlWorkbookTeX
экземпляре?
Я хочу избежать следующего:
- добавить член
Workbook
(это не имеет смысла, поскольку я буду ссылаться на новый экземпляр Workbook
под моим унаследованным объектом , делая прежнее устаревшее) - копирование (или назначение) всех элементов хранения данных из экземпляра
load_workbook()
, возвращенного в мой собственный объект (мне не нужно заботиться о внутренностях класса, это причина, которую я унаследовал от этого в первую очередь)
Я что-то упускаю здесь очевидное? Каков был бы «правильный» способ сделать это?
Спасибо заранее!
РЕДАКТИРОВАТЬ:
, поскольку это кажется не тривиальным (давайте назовем это странной архитектурой этого часть openpyxl
?), я просто воспользовался ярлыком, которого хотел избежать:
def __init__(self, filename):
super().__init__()
# ok, awaiting a beter solution, just load and copy the data
wb = openpyxl.load_workbook(filename=filename, data_only=True)
self._sheets = wb._sheets
...
(Это, похоже, не проблема, поскольку, очевидно, нет других загруженных данных, кроме листов в моем case. YMMV хотя.)
EDIT2:
Полная реализация с использованием этого теперь в Github: xls2latex