Openpyxl удаляет ячейки, когда я вставляю новые строки и объединяю вставленные строки - PullRequest
0 голосов
/ 05 марта 2020

Я использую openpyxl для создания нового листа. Проблема, с которой я сталкиваюсь, заключается в том, что при сохранении файла openpyxl объединяет многие объединенные ячейки и объединяет множество неотсоединенных ячеек. Я использую два файла, потому что иногда мне нужно получить доступ к значению, но мне нужно сохранить формулы.

    import openpyxl
    import shutil
    old_file='old.xlsx'
    new_file='new.xlsx'

    shutil.copy(old_file,new_file)
    wb=openpyxl.load_workbook(old_file, data_only=True)
    wb2=openpyxl.load_workbook(new_file,data_only=False, read_only=False)

    sheet=wb.get_sheet_by_name('sheet1')
    sheet2=wb2.get_sheet_by_name('sheet1')

    for row in range(1,sheet2.max_row):
        if sheet2.cell(row,1).value is not None and sheet2.cell(row,1).value == 'insert here':
            row2 = row
        else:
            pass  

         sheet2.insert_rows(row2,amount=1)

Некоторые из вставленных ячеек выглядят как объединенные. Кроме того, некоторые из объединенных ячеек в файле становятся не объединенными, а многие из ячеек, которые были объединены, объединяются. Я смог изменить значения в ячейках, и все работало нормально. Кажется, проблема возникает после того, как я вставил строку. Кто-нибудь сталкивался с этой проблемой? В Интернете я обнаружил, что ячейки теряют границы и стили.

Я смотрел на этот ответ , но дело в том, что иногда я не знаю, сколько строк потребуется быть добавленным Я попытался:

Я использую linux, и на моем компьютере установлена ​​Libre. Это как-то связано с этим? Когда я открываю файл на WIndows ОС с Excel, возникает проблема слияния / удаления.

    for merged_cell in merged_cells_range:
        merged_cell.shift(0,1)  

Но все стало еще хуже. Теперь ячейки, которые остались объединенными, теперь объединены.

...