J'ai un fichier Excel et je souhaite le convertir en fichier JSON
. Donc, l'Excel est quelque chose comme ça:
import openpyxl, pprint, json print('Opening workbook...') wb = openpyxl.load_workbook('excel_form.xlsx') sheet = wb.get_sheet_by_name('Sheet') excel_data = {} print('Reading rows...') for row in range(2, sheet.max_row + 1): Col F = sheet['F' + str(row)].value Col C = sheet['C' + str(row)].value Col A = sheet['A' + str(row)].value excel_data.setdefault(Col F, {}) excel_data[Col F].setdefault(Col C, {'Col A': Col A}) # Open a new text file and write the contents of excel_data to it. print('Writing results...') with open('DATA.json', 'w') as resultFile: json.dump(Matrix, resultFile) print('Done.')
Je voudrais que le JSON
suive ce format:
{ "EE": { "A": { "Col A key": "1", "Col A key": "7" }, "E": { "Col A key": "8" }, }, "FF": { "B": { "Col A key": "2" }, "C": { "Col A key": "4" } }, "HH": { "D": { "Col A key": "5", "Col A key": "6" } } }
Quelqu'un peut-il m'aider à mettre en œuvre cela en utilisant python
? J'ai essayé différentes manières mais sans succès. Voici ce que j'ai fait jusqu'à présent:
------------------------- | Col A | Col C | Col F | --------+-------+-------- | 1 | A | EE | | 2 | B | FF | | 4 | C | FF | | 5 | D | HH | | 6 | D | HH | | 7 | A | EE | | 8 | E | EE | --------------------------
Merci d'avance
3 Réponses :
Il existe 2 approches pour atteindre le résultat:
excel2json
. C'est un outil assez simple mais qui pourrait vous être utile.excel2json-3
aide de pip
.JSON
pour chaque feuille du fichier:import pandas excel_data_fragment = pandas.read_excel('excel_form.xlsx', sheet_name='Sheet') json_str = excel_data_fragment.to_json() print('Excel Sheet to JSON:\n', json_str)
pandas
. Si vous recherchez une solution plus complète, vous pourriez tout aussi bien trouver les pandas
utiles. C'est une bibliothèque conçue pour la manipulation de données et possède de nombreuses autres fonctionnalités.pandas
via pip
.JSON
décrivant la feuille Excel appelée Sheet
.import excel2json excel2json.convert_from_file('excel_form.xlsx')
Il émet une erreur AttributeError: le module 'excel2json' n'a pas d'erreur d'attribut 'convert_from_file'
Je préfère utiliser xlrd
pour convertir les lignes Excel au format JSON
.
with open("RulesJson.json", "w", encoding="utf-8") as writeJsonfile: json.dump(data_list, writeJsonfile, indent=4,default=str)
Ouvrez le classeur et sélectionnez la première feuille de calcul
for rownum in range(1, sh.nrows): data = OrderedDict() row_values = sh.row_values(rownum) data['<Column Name1>'] = row_values[0] data['<Column Name2>'] = row_values[1] data_list.append(data)
Créer une liste pour contenir des dictionnaires
data_list = []
Parcourez chaque ligne de la feuille de calcul et récupérez les valeurs dans dict
wb = xlrd.open_workbook("Excel-sheet location here") sh = wb.sheet_by_index(0)
Ecrire dans un fichier:
import xlrd from collections import OrderedDict import json
Vous pouvez consulter cet outil, peut-être que cela vous aidera:
Flatten
Tool est une bibliothèque Python et une interface de ligne de commande pour convertir des feuilles de calcul simples ou multiples en un document JSON et inversement.
Quel est le problème spécifique avec le code affiché?
Que diriez-vous de cette réponse précédente: stackoverflow.com/questions/53940031/...
Je pense que vous devriez envisager d'utiliser le package simplejson au lieu d'essayer de réinventer la roue.