Python Excel到JSON的转换

时间:2020-02-23 14:42:40  来源:igfitidea点击:

有很多方法可以将excel文件转换为JSON数据。
在本教程中,我们将研究两个将excel文件转换为JSON的python模块。

  • excel2json-3
  • Pandas

使用excel2json-3模块将Excel文件转换为JSON文件

这是一个非常简单的模块,可将excel文件转换为JSON文件。
excel工作表中的内容将转换为JSON字符串并保存在文件中。

文件的名称是从Excel工作表名称派生的。
因此,如果有两个名为" Numbers"和" Cars"的工作表,则JSON文件将分别命名为Numbers.json和Cars.json。

该模块支持.xls和.xlsx文件格式进行转换。
我们可以从文件系统以及URL中读取excel文件。

我们可以使用PIP命令安装此模块。

$pip install excel2json-3

对于我们的示例,我创建了一个名为" records.xlsx"的Excel文件,该文件包含三张纸。

这是将这个excel文件转换为JSON文件的脚本。

import excel2json

excel2json.convert_from_file('records.xlsx')

该脚本将创建三个JSON文件。

员工.json

[
  {
      "EmpID": 1.0,
      "EmpName": "hyman",
      "EmpRole": "CEO"
  },
  {
      "EmpID": 2.0,
      "EmpName": "David Lee",
      "EmpRole": "Editor"
  },
  {
      "EmpID": 3.0,
      "EmpName": "Lisa Ray",
      "EmpRole": "Author"
  }
]

Cars.json

[
  {
      "Car Name": "Honda City",
      "Car Model": "City",
      "Car Maker": "Honda",
      "Car Price": "20,000 USD"
  },
  {
      "Car Name": "Bugatti Chiron",
      "Car Model": "Chiron",
      "Car Maker": "Bugatti",
      "Car Price": "3 Million USD"
  },
  {
      "Car Name": "Ferrari 458",
      "Car Model": 458.0,
      "Car Maker": "Ferrari",
      "Car Price": "2,30,000 USD"
  }
]

Numbers.json

[
  {
      "1.0": 3.0,
      "2.0": 4.0
  },
  {
      "1.0": "N1",
      "2.0": "N2"
  },
  {
      "1.0": 5.0,
      "2.0": 6.0
  },
  {
      "1.0": 7.0,
      "2.0": 8.0
  }
]

如果必须从URL读取excel文件,请使用convert_from_url()函数。

excel2json-3模块的局限性

  • 该插件的功能非常有限。

  • 没有选项可以跳过任何工作表,行和列。
    这使得很难使用更大的excel文件。

  • JSON保存到文件中。
    大多数时候,我们想转换为JSON并在程序中使用它,而不是将其保存为文件。

  • 整数将转换为浮点数。

使用Pandas模块将Excel工作表转换为JSON字符串

Pandas 模块提供了将Excel工作表读入DataFrame对象的功能。
有很多选项可以指定标题,读取特定列,跳过行等。
您可以在Pandas read_excel()–使用Python读取Excel文件中了解更多信息。

我们可以使用to_json()函数将DataFrame对象转换为JSON字符串。
让我们看一个简单的示例,阅读" Employees"表并将其转换为JSON字符串。

import pandas

excel_data_df = pandas.read_excel('records.xlsx', sheet_name='Employees')

json_str = excel_data_df.to_json()

print('Excel Sheet to JSON:\n', json_str)

输出:

Excel Sheet to JSON:
 {"EmpID":{"0":1,"1":2,"2":3},"EmpName":{"0":"hyman","1":"David Lee","2":"Lisa Ray"},"EmpRole":{"0":"CEO","1":"Editor","2":"Author"}}

因此,JSON数据是按列的方向创建的。
如果要创建按行方向的JSON字符串,请将" orient"参数值作为" records"传递。

json_str = excel_data_df.to_json(orient='records')

输出:

Excel Sheet to JSON:
 [{"EmpID":1,"EmpName":"hyman","EmpRole":"CEO"},{"EmpID":2,"EmpName":"David Lee","EmpRole":"Editor"},{"EmpID":3,"EmpName":"Lisa Ray","EmpRole":"Author"}]