Python教程:如何将Excel表格数据转换为JSON格式

前言

excel表格中的数据,转化为json格式,再用程序去处理json数据,是常见的数据处理方式。这样可以实现按照需求去做数据处理。

需要用到的软件

除了python环境外,主要用到读取excel文件的库,以及json数据格式处理库。
常用的excel库:

openpyxl: 可以用来读写Excel文件的库。可以处理.xlsx文件,支持读取和写入单元格、行、列等操作。
xlrd:可以用来读取Excel文件的库。可以处理.xls文件,包括读取单元格、行、列等操作。

json库:

json:Python自带的JSON解析库,支持将JSON字符串解析成Python对象,也支持将Python对象转换为JSON字符串。
requests:第三方库requests可以快速发送HTTP请求,并自动解析JSON数据。

软件的安装:
例如,openpyxl的安装方式如下:

pip install openpyxl

excel常用组件概念:

workbook对象:对应于一个excel文件
Sheet对象:对应于一个sheet
单元格对象:sheet中的一个单元格
行:sheet中的行
列:sheet中的列

openpyxl和xlrd都支持以上概念,都有对应的获取方法。

实践

例子1: 用openpyxl来进行excel的处理,json库来进行json数据的处理。

# -*- coding: utf-8 -*-
import os
import sys

import openpyxl
import json
import io

# 将json保存为文件
def save2json(jd, json_file_name):
    file = io.open(json_file_name, 'w', encoding='utf-8')
    # 把对象转化为json对象
    # indent: 参数根据数据格式缩进显示,读起来更加清晰
    # ensure_ascii = True:默认输出ASCII码,如果把这个该成False, 就可以输出中文。
    txt = json.dumps(jd, indent=2, ensure_ascii=False)
    file.write(txt)
    file.close()

# excel表格转json文件
def excel2json(excel_file, json_file_name):
    # 加载工作薄
    book = openpyxl.load_workbook(excel_file)
    # 获取sheet页
    sheet = book["Sheet1"]
    # 行数
    max_row = sheet.max_row
    # 列数
    max_column = sheet.max_column
    print("max_row: %d, max_column: %d" % (max_row, max_column))
    # 结果,数组存储
    result = []
    heads = []
    # 解析表头
    for column in range(max_column):
        # 读取的话行列是从(1,1)开始
        heads.append(sheet.cell(1, column + 1).value)
    # 遍历每一行
    for row in range(max_row):
        if row == 0:
            continue
        one_line = {}
        for column in range(max_column):
            # 读取第二行开始每一个数据
            k = heads[column]
            cell = sheet.cell(row + 1, column + 1)
            value = cell.value
            one_line[k] = value
        print(one_line)
        result.append(one_line)
    book.close()
    # 将json保存为文件
    save_json_file(result, json_file_name)


#main
if '__main__' == __name__:
     excel2json(u't1.xlsx', 'res.json')


例子2: 用xlrd来读取excel文件:

# -*- coding: utf-8 -*-
import os
import sys

import json
import io
import xlrd

# 打开Excel文件,返回workbook对象
wb = xlrd.open_workbook('a.xls')

# 获取Sheet对象
sheet = wb.sheet_by_name('Sheet1')

# 读取某单元格的数据
print(sheet.cell_value(0, 0))

# 读取某行数据,返回一个列表
row = sheet.row_values(1)
print(row)

# 读取某列数据,返回一个列表
column = sheet.col_values(0)
print(column)

# 循环读取多行数据
for i in range(sheet.nrows):
row = sheet.row_values(i)
print(row)

例子3: 用requests来处理网络数据:

import requests

url = 'http://api.mytest.com/v1/user'
response = requests.get(url)

# 解析JSON数据
data = response.json()
print(data)

# 访问JSON数据的某一项
name = data[0]['name']
print(name)

以上,就是本篇的内容了。

物联沃分享整理
物联沃-IOTWORD物联网 » Python教程:如何将Excel表格数据转换为JSON格式

发表评论