Подскажите конструкцию для openpyxl.
Требуется открыть один файл Excel. Считать из него пару цифирь. Потом открыть другой файл Excel. Считать из него данные и записать в третий файл Excel.
Как правильно открывать, закрывать?
ewroТак ты открывай их один за другим, потом работай с ними всеми, а потом закрывай один за другим.
Про открытие нескольких файлов там нету ничего…
book.release_resources() del book
ewroТам автоматически происходит это. Она открывает ZipFile() а потом внутри же и закрывает его.
А для openpyxl не найду никак
ewroТвоя задача никак не относится к модулям для работы с xls-файлами. Ты не можешь сделать правильный алгоритм, который бы правильно использовал эти модули. Модули не должны открывать по несколько файлов, их задача - открыть один файл правильно, работать с ним полноценно и сохранить его потом правильно.
Придется в данном случае работать с xlrd.
ewroМодуль xlrd не пишет в файлы, только читает. Для записи используется xlwt. Они как бы парой ставятся и потом используются по отдельности. А openpyxl может и читать, и писать - то есть один модуль вместо двух.
если в xlrd вопрос решается двумя строчками?
ewroВ openpyxl он сам закрывает файл после записи, там в примерах как раз нигде закрытия нет из-за этого. В исходниках это видно. Что я советовал - это общий подход, где если было открытие чего-то, то должно быть и закрытие, потому что без закрытия могут пропасть данные, так как данные не всегда пишутся сразу, а могут откладываться для записи в другое время (отложенной записи). Если у тебя данные отложены, то при резком выходе из программы они могут пропасть, так и не записавшись.
Если не трудно - покажите как правильно закрыть.
ewroМожешь так и делать. Открыл, прочитал в память, закрыл. Дальше из памяти используешь данные, файл уже закрыт, с ним работы не ведётся. С файлом записи точно так же - открыл, записал из памяти, закрыл.
Задача у меня в принципе простая. Линейная. Из шаблона Excel файла взять номера ячеек. Теперь его можно закрыть. Открыть другой для поиска. Записать в третий результат поиска.