2017-02-20 38 views
0

Мне нужно объединить 3 ячейки строки, разделенные «-».Как объединить данные одной строки в одну ячейку с помощью Openpyxl

ввода является:

A1 A9 AMF 
A2 B9 BMF 
A1 A9 AMF (Same as 1st row) 
A4 D9 DMF 

Ожидаемый результат:

A1-A9-AMF 
A2-B9-BMF 
A4-D9-DMF 

Я использовал следующие,

for r1 in row: 
    strcell1 = '-'.join(map(str,row)) # converting to string list 
    cell1 = ''.join(strcell1)   # joining the cells 
    list_value = [cell1] 
    ws.append(list_value)   #writing on a different sheet of same workbook 

Но я не получаю ожидаемый результат , есть что-то что мне не хватает?

ответ

0

Вы пытаетесь сделать .join()row s вместе, который не сработает. Попробуйте вместо этого:

wb = openpyxl.load_workbook('your_workbook.xlsx') 
ws1.get_sheet_by_name('Sheet1') 
combined = [] 
for row in ws.rows: 
    combined.append('-'.join(r1.value for r1 in row)) 

Результат:

>>> print(combined) 
[u'A1-A9-AMF', u'A2-B9-BMF', u'A1-A9-AMF', u'A4-D9-DMF'] 

Написать результат на другой лист:

ws2 = wb.create_sheet('Sheet2') 
for val in combined: 
    ws2.append([val]) 
wb.save('your_workbook_modified.xlsx') 
+0

второй строке следует читать 'WS = wb.get_sheet_by_name ('Лист1')'. Чтобы присоединиться только к первым 3-х столбцам, измените на 'объединенный.append ('-'. Join (cell.value для ячейки в строке [: 3]))' – stovfl

+0

Он работал с помощью "combination.append ('-'. Join (r1.value для r1 в строке)) ". –

+0

Большое спасибо, это действительно помогло. –