Openpyxl: объединение нескольких столбцов в одну ячейку на строку (многорядная) - PullRequest
0 голосов
/ 10 февраля 2020

Этот вопрос является продолжением: Openpyxl: TypeError - Объединение нескольких столбцов в одну ячейку в строке

Что я хочу сделать: Я хочу объединить ячейки от столбцов F до M в строке и поместить объединенное значение в столбец E, как показано ниже. Это необходимо сделать для всех строк одновременно.

Ввод:

A B C D E F   G   H  .. M
.......   E1  90  2A .. 26
.......   0   80  F8 .. 

Выход:

A B C D E         F   G   H  .. M
....... E1902A..26
....... 080F8..

Код:

def concat_f_to_m():
    for row_value in range(1, sheet.max_row+1):
        values=[]
        del values[:]
        for row in sheet.iter_rows(min_col=6, max_col=14, min_row=row_value, max_row=row_value):
            for cell in row:
                if cell.value != None:
                    values.append(str(cell.value))

                else:
                    del values[:]
                    pass

            sheet[f'E{row_value}'].value= ''.join(values)

concat_f_to_m()

Также я установил столбец max в столбец N (14), так как самый длинный код идет до столбца M, и я хочу остановить l oop, если не найдена запись для go выйти и присоединиться к пунктам списка. Я не могу преодолеть проблему, заключающуюся в том, что, несмотря на то, что список значений показывает только элементы строки, он не записывает его в ячейку. Не могли бы вы дать мне подсказку, как объединить все строки, соединив список значений в определенной строке? Спасибо!

1 Ответ

0 голосов
/ 19 февраля 2020

Правильная реализация:

def concat_f_to_m():
for row_value in range(1, sheet.max_row+1):
    values=[]
    del values[:]
    for row in sheet.iter_rows(min_col=6, max_col=14, min_row=row_value, max_row=row_value):
        for cell in row:
            if cell.value != None:

                values.append(str(cell.value))
                sheet[f'E{row_value}'].value= ''.join(values)
            else:
                del values[:] 
                break

concat_f_to_m()
...