Я новичок в программировании и пытаюсь сделать следующее (пока безуспешно):
У меня есть таблица Excel с product codes
, sellers
и prices
и , пытаюсьобновить prices
в моей электронной таблице из двух разных электронных таблиц, отправленных оптовыми торговцами.
Я хочу, чтобы программа правильно
- выполняла поиск в таблице Excel и
- скопируйте соответствующий
price
оттуда в правильное местоположение выше.
Итак, я хочу, например:
- скачать
price
для product code
'92526'
, продаваемых оптовиком A.
Я хочу оставить производителя price
нетронутым.
У меня была программа, которая делала это правильно,
, за исключением того, что я говорил, чтобы она повторялась для каждой строкив моей таблице, и он стирает существующие цены для производителей .
Я хочу словарь в формате:
{92526: {'price': 5.5, 'seller': 'Wholesaler A'},
97056: {'price': 19, 'seller': 'Wholesaler A'},
...
}
Я попытался добавить скриншотэлектронной таблицы с примерами данных, но не смог, так что вот так:
Product Code Seller Price
92526 Wholesaler A 5.5
97056 Wholesaler A 19
97055 Wholesaler B 15
97054 Wholesaler B 4.5
925AAT Manufacturer 3.99
925AAF Manufacturer 6.75
Столбцы не представляют фактические столбцы в моей электронной таблице.
Код, который у меня есть, это (снова, начинающий):
import openpyxl
import pprint
data = {}
files = {'My_main_file':'my_file.xlsx',
'File_WholesalerA':'FileA.xlsx',
'File_WholesalerB':'FileB.xlsx'
}
wb1 = openpyxl.load_workbook(files['My_main_file'])
wb2 = openpyxl.load_workbook(files['File_WholesalerA'])
wb3 = openpyxl.load_workbook(files['File_WholesalerB'])
sheet1 = wb1.get_sheet_by_name('Master Database')
sheet2 = wb2.get_sheet_by_name('sheetA')
sheet3 = wb3.get_sheet_by_name('sheetB')
# Collect all product codes in my database spreadsheet and add them as keys to the empty dictionary
for row in range(2, sheet1.max_row + 1):
code = sheet1['E' + str(row)].value
data[code] = code
# Get Wholesaler A prices and add them to data dictionary
for row in range(2, sheet2.max_row + 1):
code = sheet2['A' + str(row)].value
if code in data:
data[code]['price'] = sheet2['J' + str(row)].value
data[code]['seller'] = 'Wholesaler A'
# Get Wholesaler B prices and add them to prices dictionary
for row in range(2, sheet3.max_row + 1):
code = sheet3['A' + str(row)].value
if code in data:
data[code]['price'] = sheet3['K' + str(row)].value
data[code]['seller'] = 'Wholesaler B'
# Paste the prices collected into the dictionary into my excel sheet for each #corresponding product code
for row in range(2, sheet1.max_row + 1):
code = sheet1['E' + str(row)].value
if code in data:
# Here I try to ensure that the code only updates the prices for the
# corresponding sellers and doesn't overwrite the prices for
# manufacturers.
if sheet1['C' + str(row)].value == data[code]['seller']:
sheet1['K' + str(row)].value = data[code]['price']
# Save another version of the spreadsheet with the data
wb1.save('My_main_file v2.xlsx')
pprint.pprint(data)
Ожидаемый результат - программа отсканирует (10k +) строк электронных таблиц Оптовика, найдет цену, соответствующую моему коду продукта, и вставит ее в мой лист, перезаписываястарая цена, но не стирая никакую другую цену.
My inЭта программа сумела собрать цены и вставить их в соответствующие коды продуктов, но она стерла цены производителей, которые были у меня.Эта новая программа по какой-то причине даже не заполняет словарь.
Любая помощь приветствуется.