python如何把excel文件转化为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, 'a+', encoding='utf-8')
    # 把对象转化为json对象
    # indent: 参数根据数据格式缩进显示,读起来更加清晰
    # ensure_ascii = True:默认输出ASCII码,如果把这个该成False, 就可以输出中文。
    #txt = json.dumps(jd, ensure_ascii=False) #一次性把所有都转换为放入,然后在write
    for dict in jd:
        json.dump(dict, file, ensure_ascii=False) #dump会自动给没一条数据换行
        file.write('\r')
    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保存为文件
    save2json(result, json_file_name)

excel2json('./data/data.xlsx', 'data.json')

在这里是要把excel中的每一行转化为字典,并且将字典作为元素放入到列表中,然后再将列表中的元素逐个放入到json文件中(通过dump),在json中每存放一个字典元素,就会增加一个空格。

但是如果要将整体放入到json文件,就是用dumps

text = json.dumps(dict, indent=1, ensure_ascii=False)
file.write(text)

这样使用indent保证不同元素之间会换行,并且会把整个列表写入到json文件中,保留“[]”以及元素之间的逗号

如果想要使得json文件一行代表一个元素,并且没有额外的内容,就是用dump,如果想整体写入,久荣dumps

你可能感兴趣的:(python,excel,json)