У меня есть приложение, в котором я пишу на листе до последнего столбца + 2, если есть уже данные и последний столбец + 1, если рабочий лист пуст. Я получаю то, что я думаю, что это пустая таблица выглядит следующим образом:Определить, является ли рабочий лист пустым в openpyxl
from openpyxl.workbook.workbook import Workbook
book = Workbook()
sheet = book.active
Когда я sheet.max_row
и sheet.max_column
, я получаю 1
для обоих свойств. Я хотел бы получить ноль, так что я сделать следующее:
if sheet.max_row == 1 and sheet.max_column == 1 and not sheet['A1'].value:
start_col = 1
else:
start_col = sheet.max_column + 2
Имея проверить значение ячейки кажется немного излишним, не говоря уже о подверженной ошибкам. Первоначально я ожидал следующую работу:
if sheet.max_column == 0:
start_col = 1
else:
start_col = sheet.max_column + 2
Есть причина max_row
и max_column
всегда >= 1
? Это ошибка, преднамеренная функция или разумный побочный эффект чего-то еще? Наконец, существует обходное решение (например, что-то вроде sheet.isempty()
).
Кстати, я нашел следующий комментарий при просмотре отслеживания ошибок: https://bitbucket.org/openpyxl/openpyxl/issues/514/cell-max_row-reports-higher-than-actual#comment-21091771:
Строки с пустыми ячейками являются еще строкой. Они могут быть отформатированы для будущего использования или другого материала, мы не знаем. 2.3 имеет несколько улучшенную эвристику, но будет содержать строки пустых ячеек.
Этот (и еще один комментарий, на который я больше не могу найти ссылку) заставляет меня поверить, что первая ячейка эффективно существует. В этом случае стоит ли отправлять запрос функции?