Преобразование Excel в JSON с использованием Python - PullRequest
1 голос
/ 03 февраля 2020

У меня есть файл Excel, и я хочу преобразовать его в файл JSON. Таким образом, Excel выглядит примерно так:

-------------------------
| 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  |
--------------------------

Я бы хотел, чтобы JSON следовал этому формату:

{
"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"
    }
  }

}

Может кто-нибудь помочь мне реализовать это с помощью python? Я пробовал разные способы, но безуспешно. Это то, что я сделал до сих пор:


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.')

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 03 февраля 2020

Есть 2 подхода для достижения результата:

  1. Использование excel2json. Это довольно простой инструмент, но может быть полезным для вас.
    • Сначала установите пакет excel2json-3, используя pip.
    • Затем, запустив этот блок кода, выведите файл JSON для каждого листа в файле:
import excel2json

excel2json.convert_from_file('excel_form.xlsx')

Использование pandas. Если вы ищете более комплексное решение, вы также можете найти pandas полезным. Это библиотека, созданная для манипулирования данными и обладающая множеством других функций.
  • Первая установка pandas через pip.
  • Затем выполнение этого кода должно привести к печати строки JSON, описывающей лист Excel, которая называется Sheet.
0 голосов
/ 31 марта 2020

Я предпочитаю использовать xlrd для преобразования строк Excel в формат JSON.

import xlrd
from collections import OrderedDict
import json

Откройте книгу и выберите первый лист

wb = xlrd.open_workbook("Excel-sheet location here")
sh = wb.sheet_by_index(0)

Создать список для хранения словарей

data_list = []

Перебирать каждую строку на листе и извлекать значения в dict

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)

Запись в файл:

 with open("RulesJson.json", "w", encoding="utf-8") as writeJsonfile:
      json.dump(data_list, writeJsonfile, indent=4,default=str) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...