Я не могу заставить мой код openpyxl работать - PullRequest
1 голос
/ 12 февраля 2020

Моя текущая задача - написать код, который выполняет следующее:

  • Принимает пользовательский ввод, который будет обозначаться как batchNumber

  • Принимает пользовательский ввод, который будет обозначен как batchLocation

  • Просмотр каждой строки в файле .xlsx с именем customerData

  • Соответствие пользовательский ввод batchNumber для данных в первом столбце

  • Запись batchLocation в ячейку в 3-м столбце рядом с batchNumber

Я думаю, что это намного проще, чем я это представляю, но я, кажется, вращаюсь кругами.

Документ Excel структурирован как ...

Batch Number Product Type Location

1234 Guitar *Blank*

2345 Drums *Blank*

Я пытался изменить код ATBS из раздела Excel, но не могу заставить его работать с пользовательским вводом вместо данных из словаря. Код выполняется без ошибок, но изменения не вносятся, если данные не появляются в самой первой строке? Я также пытался использовать iter_rows(), но не добился большого успеха.

import openpyxl

wb = openpyxl.load_workbook('customerData.xlsx')
sheet = wb['SalesOrders']

# User Input of data 
CUSTOMER_UPDATE = {}
batchNumber = str(input('Please scan the batch number: '))
batchLocation = input('Please scan the location: ')
CUSTOMER_UPDATE[batchNumber] = batchLocation

# Loop through the rows and update the location
for rowNum in range(2, sheet.max_row): #Used to skip the first row as it is only a header.
    productName = sheet.cell(row=rowNum, column=1).value

if productName in CUSTOMER_UPDATE:
    sheet.cell(row=rowNum, column=3).value = CUSTOMER_UPDATE[productName]

wb.save('customerDataCopy.xlsx')

1 Ответ

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

Я думаю, что вы хотите проверить productName для каждой строки, поэтому вы хотите сделать отступ для if под for l oop, например:

# Loop through the rows and update the location
for rowNum in range(2, sheet.max_row): #Used to skip the first row as it is only a header.
    productName = sheet.cell(row=rowNum, column=1).value
    if productName in CUSTOMER_UPDATE:
        sheet.cell(row=rowNum, column=3).value = CUSTOMER_UPDATE[productName]
...