У меня есть книга Excel, которую я загружаю через Openpyxl. Однако по какой-то причине рабочая книга считает, что в строке 287–1024 есть пустые ячейки со значениями. Поэтому, когда я добавляю, он добавляется в строку 1025. Где я хочу добавить в строку 287.
Я написал некоторый код для обработки пустых строк и использую функцию openpyxl ws.delete_rows(idx)
, чтобы удалить эти пустые строки,но теперь он не добавляет никаких данных ни в строку 287, ни в 1025. Я напечатал значения ws.max_row
, и он указывает мне, что это 286.
РЕДАКТИРОВАТЬ
Но ничего добавляется либо в строку 287 , либо в строку 1025 после того, как я удалил эти None
строки. Я подтвердил , открыв сохраненный файл Excel и не увидев добавленных строк при поиске всего документа.
Используемая версия openpyxl.__version__
: openpyxl-2.6.4
.
* 1025. * Это может быть видно в моем коде, прежде чем я добавлю новые значения, я печатаю оба
ws.max_row
и
ws._current_row
, и они оба печатают значение
286
, которое является правильным.
Затем я печатаю ws._current_row
после того, как ядобавьте значения, и это даст мне 287
, что опять-таки правильно. Но данные по-прежнему не добавляются.
ВОЗМОЖНОЕ РЕШЕНИЕ
На данный момент я смог сделать быстрый обходной путь, удалив код для удаления пустых строк и вручную удалив ихв Excel и код, добавленный к 287-й строке. Но это не будет хорошо работать, когда кто-то захочет изменить файл, и в нем снова будут пустые строки.
решено
В моем первом цикле for я переписал values
список, который должен был быть добавлен. Так что ничего не добавляется. Я изменил имя переменной в цикле for, и теперь она работает (см. Рабочую версию ниже).
wb = load_workbook(common_dir_name + 'tracking.xlsx')
ws = wb.active
rows_to_delete = []
for row in ws.iter_rows():
cell_values = [cell.value for cell in row]
if not any(cell_values):
rows_to_delete.append(row[0].row)
for x in reversed(rows_to_delete):
ws.delete_rows(x)
print(ws.max_row) #prints 286
print(ws._current_row) #prints 286
ws.append(values)
print(ws._current_row) #prints 287
wb.save(common_dir_name + "tracking.xlsx")