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