前人栽树 我来百度
3个小时百度吧啦吧啦 然后就生下了 它
环境Python3.7.2
把它存成py脚本放在有excel的表的文件夹里面运行就可以了
# 这段代码主要的功能是把excel表格转换成utf-8格式的json文件
# lastdate:2011-8-15 14:21 version 1.1
# Modify by Snail version2.1
# 修改成读取下面这种类型的表为json
# +++++++++++++++++++++++++++++++++++++++
# 这是一张xxx表
# +++++++++++++++++++++++++++++++++++++++
# 字段1 + 字段2 + 字段3
# +++++++++++++++++++++++++++++++++++++++
# id + name + string
# +++++++++++++++++++++++++++++++++++++++
# 1 + 名字1 + 内容1
# +++++++++++++++++++++++++++++++++++++++
# 2 + 名字2 + 内容2
# +++++++++++++++++++++++++++++++++++++++
# 3 + 名字3 + 内容3
# +++++++++++++++++++++++++++++++++++++++
# modifyData 2019-03-09 01:22:28
import os
import sys
import codecs
import xlrd # http://pypi.python.org/pypi/xlrd
def FloatToString(aFloat):
if type(aFloat) != float:
return ""
strTemp = str(aFloat)
strList = strTemp.split(".")
if len(strList) == 1:
return strTemp
else:
if strList[1] == "0":
return strList[0]
else:
return strTemp
def table2json(table, jsonfilename, fileDir):
hang = table.nrows
lie = table.ncols
f = codecs.open(fileDir+jsonfilename, "w", "utf-8")
f.write(u"[")
# 这里我们这的表是从第三行开始读表前面两行是沙雕
for r in range(2, hang-1):
# 每一行一组数据 一个对象的开始用{
f.write(u"{")
for c in range(lie-1):
# 定义一个空的字符串
strCellValue = u""
# 获取一个单元格的值
CellObj = table.cell_value(r+1, c)
# 判断数据类型如果是float类型要转成字符串
if type(CellObj) == float:
strCellValue = FloatToString(CellObj)
else:
# 转成字符串
strCellValue = str(CellObj)
# 坑爹的在值里面写了"在里面 一定要去掉 如果有其他的沙雕东西要过滤的话就在这里做过滤
strCellValue = strCellValue.replace(u"\"", u"")
# 变成Json的值字符串要加"
strCellValue = u'\"'+strCellValue+u'\"'
# 取第二行的名称作为字段的
strTmp = u"\"" + table.cell_value(2, c) + u"\":" + strCellValue
# 如果不是最后一个需要加,
if c < lie-2:
strTmp += u","
# 写字符串到{}中
f.write(strTmp)
f.write(u"}")
# 每一个对象后面要加,
if r < hang-2:
f.write(u",")
# 沙雕强迫症写完一个对象要换行,不换也可以的
# f.write(u"\n")
# 最后写完了所有的数据要用个]反中括号包起来
f.write(u"]")
# 关闭文件还要我说吗
f.close()
# 告诉愚蠢的人类这个表已经导出成json倒完了 没见过这么蠢的人类 写完了还要我说
print("转换完成表 ", jsonfilename)
return
# 取当前目录
curPath = os.path.dirname(__file__)
# 在当前目录下创建一个文件夹JSON
jsonDir = curPath+'\\JSON\\'
# 判断文件夹是否存在决定建不建文件夹
isExists = os.path.exists(jsonDir)
if not isExists:
os.makedirs(jsonDir)
# 遍历当前目录查询出所有的excel表
fileNameList = os.listdir(curPath)
for a in fileNameList:
# 这里只能读取xlsx的表 如果是其他的表请加入判断
extName = os.path.splitext(a)
# 剔除缓存的表
if(extName[0].find("~") >= 0 or extName[0].find("$") >= 0):
continue
# 只有这三种格式的才转 其他的不管
if(extName[1] == '.xlsx' or extName[1] == ".csv" or extName[1] == ".xls"):
data = xlrd.open_workbook(curPath+'\\'+'item.xlsx')
table = data.sheet_by_index(0)
table2json(table, a.replace(".xlsx", "")+'.json', jsonDir)
print("所有的表转换完成^_^")