Объединить две ячейки в Excel, используя цикл Python Openpyxl And For - PullRequest
2 голосов
/ 08 февраля 2020

Я хочу объединить две ячейки в Excel с помощью openpyxl. Но я изо всех сил пытаюсь получить правильный код "для l oop", так как я должен перебирать и объединять ячейки. Пока мой код

import openpyxl
wk=openpyxl.load_workbook(r"C:\\Users\\hp\\Desktop\\Uarch\\ConcatDemo.xlsx")
sh=wk['Sheet1']
rows=sh.max_row
columns=sh.max_column
for row_num in range(1,rows+1):
    sh['C{}'.format(row_num)] = '=CONCATENATE(A{},",",B{})'.format(row_num)


wk.save(r"C:\\Users\\hp\\Desktop\\Uarch\\ConcatDemo.xlsx")

Я получаю

IndexError: tuple index out of range

Erro Скриншот:

enter image description here

Не уверен, какая часть идет не так, или я поставил неправильный лог c.

Ввод:

enter image description here

Предполагаемый выход:

enter image description here

Looking жду помощи в этом ..

1 Ответ

1 голос
/ 08 февраля 2020

Проблема в том, что при форматировании строки в этом разделе ожидаются 2 значения, а не 1 в функции сцепления.

'=CONCATENATE(A{},",",B{})'.format(row_num)

Я мог бы добиться желаемого поведения с помощью этого

import openpyxl
wk=openpyxl.load_workbook("path_to_file.xlsx")
sh=wk['Sheet1']
rows=sh.max_row
columns=sh.max_column
for row_num in range(1,rows+1):
    sh['C{}'.format(row_num)] = '=CONCATENATE(A{},",",B{})'.format(row_num,row_num)
wk.save('file_output.xlsx')

Чтобы выделить ошибку

'A{}B{}'.format(1)
#IndexError       

'A{}B{}'.format(1, 1)
'A1B1'

Это также можно сделать с помощью Pandas

import pandas as pd
file = pd.read_excel("path_to_file.xlsx", header=None, sheet_name="Sheet1")
file[3] = file[0] + ',' + file[1]
file.to_excel("output_file2.xlsx", index=False, header=False)
...