#python #json #openpyxl
Вопрос:
Я пытаюсь проанализировать файл excel и использую цикл while, но проблема в том, что он записывает в файл json только последние данные.Может ли кто-нибудь помочь мне решить эту проблему и спасибо .
corpsCBL = {}
i=2
cell = worksheet_corps.cell(row=i, column=4)
while (cell.value) != "SORTIE":
cell2 = worksheet_corps.cell(row=i, column=2)
if cell2.value is not None:
corps= {
"codeArticle": worksheet_corps.cell(row=i, column=2).value worksheet_corps.cell(row=i, column=3).value,
"produit": worksheet_corps.cell(row=i, column=4).value,
"trusquinCB": worksheet_corps.cell(row=i, column=5).value,
"trusquin":worksheet_corps.cell(row=i, column=6).value,
"longueurCB":worksheet_corps.cell(row=i, column=12).value
}
corpsCBL.update(corps)
json_object = json.dumps(corpsCBL, indent = 4)
i=i 1;
cell = worksheet_corps.cell(row=i, column=4)
# Writing to sample.json
with open("data.json", "w") as outfile:
outfile.write(json_object)
Ответ №1:
Из словаря python.обновление():
метод update() добавляет элементы в словарь, если ключа в словаре нет. Если ключ находится в словаре, он обновляет ключ новым значением.
Поэтому каждый раз, когда вы звоните corpsCBL.update(corps)
, предыдущая запись будет перезаписана, так как уже присутствуют одни и те же значения ключа («codeArticle», «produit» и так далее).
Предполагая, что вы хотите собрать все записи, вы можете изменить corpsCBL на список и просто добавить диктант для каждой записи Excel.
corpsCBL = []
и
corpsBDL.append(corps)