openpyxl - col_idx, column, column_letter в версиях gt 2.5.8 - PullRequest
0 голосов
/ 11 апреля 2019

С тысячами строк кода, использующего openpyxl, мы обновили openpyxl (до версии 2.6.2), и похоже, что изменение, затрагивающее обратную совместимость, пропустило документацию.

  1. Может ли кто-нибудь (Чарли?) Подтвердить, что .column - который ранее возвратил письмо - теперь возвращает число, и для возврата письма должен использоваться новый метод .column_letter? (Правильно ли я понял из документов?)

  2. В новой версии теперь есть какая-то разница между тем, что возвращается из .column и .col_idx? (возвращают ли они в основном одно и то же, или один основан на нуле, а другой - на основе? Или ...?)

  3. Чтобы обновить наш код, если мы просто найдем / заменим .column (ожидая буквы столбца) на .column_letter - есть ли что-нибудь еще, о чем следует знать? (Для EG будет ли смещение .column_letter, возвращаемое цветом, вообще или точно таким же, как старое .column?)

1 Ответ

0 голосов
/ 12 апреля 2019

Да, в OpenPyXL 2.6+ произошли некоторые существенные изменения, в которых почему-то пропущена соответствующая документация.

Еще большее изменение, о котором следует помнить - поскольку оно также влияет на методы .column / .column_letter -- это функциональность .merge_cells.

Больше нельзя использовать .column_letter или .col_idx для ячейки в объединенном диапазоне - вы должны либо использовать .column (для числа), либо метод get_column_letter(cell) дляписьмо. (Обратите внимание, что вы должны импортировать метод get_column_letter из утилит:

from openpyxl.utils import get_column_letter

Теперь, чтобы ответить на ваши конкретные вопросы:

1)Да, теперь вы должны использовать .column_letter (больше не .column), чтобы получить букву столбца - но, как уже упоминалось выше, безопаснее использовать get_column_letter(cell).И да, .column теперь будет возвращать число, а не букву.

2) Да, .column теперь возвращает число, точно так же, как .col_idx. На самом деле, я рекомендую не использовать .col_idx больше, так как он больше не работает с ячейками в диапазоне объединенных ячеек.

3) Заменить .column на get_column_letter(cell) вместо .column_letter из-за изменений в обработке диапазонов объединенных ячеек.Поэтому простой поиск / замена не был бы целесообразным.Однако за пределами объединенных ячеек .column_letter теперь возвращает то, что раньше делал .column.

...