Python для цикла итерации в Excel - PullRequest
0 голосов
/ 05 июля 2018

У меня есть лист Excel с двумя разными столбцами, из которых я хочу получать данные по одному, например, значения данных из A2 и B2, затем выполнять определенную операцию, а затем снова принимать значения из B3 и C3 и т. Д. До B50 и С50. Я написал следующий код для этого, но я считаю, что это не правильно. Кроме того, я новичок в Python, поэтому не очень много знаний. Любая помощь будет оценена. Заранее спасибо!

    wb = openpyxl.load_workbook('Inputexcel.xlsm')
    sheet = wb['Sheet1'] 
    tup1 = (sheet['A2':'A50'])
    tup2 = (sheet['B2':'B50'])
    for i in range(0,48):      
    text = tup1[i].value
    i+=1

Мне удалось реализовать его для одного значения, а также выполнить операцию с помощью приведенного ниже кода. Но моя главная цель - повторить все значения Excel, где я сталкиваюсь с проблемой. Код для одного значения:

    wb = openpyxl.load_workbook('Inputexcel.xlsm')
    sheet = wb['Sheet1']
    text = sheet['A2'].value
    eid = sheet['B2'].value

Также поделитесь операцией, которая будет выполнена, если она вам нужна:

    doc = docx.Document('mydoc.docx')
    doc.paragraphs[9].runs[6].clear()
    doc.paragraphs[9].runs[6].text
    doc.paragraphs[9].add_run(text).bold = True
    doc.save('mydoc ' + str(eid) + '.docx')

1 Ответ

0 голосов
/ 05 июля 2018

Вместо добавления ячеек в tup1 и tup2 - я бы рекомендовал добавлять значения непосредственно в tup1 и tup2 ... как показано ниже:

wb = openpyxl.load_workbook('Book1.xlsx')
sheet = wb['Sheet1'] 
tup1 = []
tup2 = []
for i in range(2,50):
    rowA ='A{0}'.format(i)
    rowB = 'B{0}'.format(i)
    tup1.append(sheet[rowA].value)
    tup2.append(sheet[rowB].value)
print (tup1)
print (tup2)
...