Python|excel表格数据一键转json格式小工具|支持xlsx、xls格式转json|【源码+解析】
创始人
2024-02-09 11:07:27
0

背景   

        最近在使用JavaScript编写一些浏览器RPA脚本,脚本使用过程中遇到一些问题,脚本使用的数据往往存放在excel表,但运行时只能读取json数据,导致频繁人工exceljson,效率低下。

        遇到问题后赶紧搜索exceljson小工具,发现可以直接使用的工具很少,基本只提供部分代码,而且没有图形化界面。

        还是自己动手好玩。本篇文章介绍使用Python开发excel一键转json小工具,实现任意选中excelxlsxxls文件转化成json文件,并把结果显示在界面中。


目录

                    一、使用教程

二、源码解析

三、下载地址


一、excel一键转json小工具使用教程

         小工具使用Python Tkinter作为图形GUI,说实话有点难看,但是实用,Window系统直接双击运行即可。

(一)程序运行界面

        小工具运行效果,如下图 : 

小工具运行效果图

        excel转换json前后比对效果,如下图 :        

转换前后比对

         

         (二)小工具操作步骤

        1)选择需要转换的excel文件,支持xlsxxls格式,表格尽量简单,暂时不支持复杂嵌套的json格式转换。

选择excel文件

         2)点击开始转换,转换后结果显示在界面程序中,可以随时拷贝到其他地方。

开始转换并显示结果

二、源码解析

(一)小工具图形界面设计

        小工具界面需要包含excel文件选择点击按钮、转化结果状态显示栏、带滑块的转换结果文本显示区域,如下图设计界面。

         这里使用Tkinter制作界面,使用了.gird布局,代码如下:

from tkinter import Tk, Label, Button, StringVar, filedialog, Text, Scrollbar# 显示文件路径组件,_label_filepath_text为文件路径
_label_filepath_text = None
_text = None
_label_state_text = Nonedef open_window():# 创建窗口root = Tk()# 设置窗口的标题root.title("excel表格数据转json小工具")root.geometry("720x360")_button = Button(root, text="选择excel文件......", command=open_file)_button.grid(row=1, column=0)# 创建label可变文本,用于动态更新选中的文件路径global _label_filepath_text,_text_label_filepath_text = StringVar()_label_filepath = Label(root, textvariable=_label_filepath_text)_label_filepath.grid(row=2, column=0,columnspan=2)#创建滑块,并绑定文本框_yscrollbar = Scrollbar(root)_yscrollbar.grid(row=3,column=3,sticky="NS")_text = Text(root,height=21,width=99)_text.grid(row=3,column=0,columnspan=2)_yscrollbar.config(command=_text.yview)_text.config(yscrollcommand=_yscrollbar.set)# 创新开始、停止按钮_button_start = Button(root, text="开始转换", command=start_transform_file)_button_start.grid(row=1, column=1)# 创建label可变文本,用于动态更新发送文件状态global _label_state_text_label_state_text = StringVar()_label_state_text.set("待转换")_label_state = Label(root, textvariable=_label_state_text)_label_state.grid(row=4, column=0,columnspan=2)# 显示窗口root.mainloop()

(二)使用xlrd2库读取excel文件

        使用xlrd2库按行读取excel文件,读取表头、列头、表数据,这里需要主要的是最新版本的xlrd不支持xlsx,需要安装xlrd2才行。

import os
import json
import xlrd2
fileTypeArray = [".xlsx",".xls"]def readAllExecl():currentPath = os.getcwd()+"/files"for dir in [x for x in os.listdir(currentPath)]:localPath = os.path.join(currentPath, dir)if os.path.isfile(localPath):filesp = os.path.splitext(localPath)for k in fileTypeArray:if filesp[1] == k:filename = os.path.basename(localPath)readExecl(localPath,filename.split('.')[0])def readExecl(path,name):workbook  = xlrd2.open_workbook(path)sheet2_name = workbook.sheet_names()[0]sheet=workbook.sheet_by_name(sheet2_name)   # sheet索引从0开始# sheet的名称,行数,列数adict = {}for i in range(1,sheet.nrows):data = {}for j in range(0,sheet.ncols):value = TransformationType(sheet.cell_value(i,j))if  isinstance(value , str):if isJsonString(value):data[TransformationType(sheet.cell_value(0,j))] = eval(value)else:data[TransformationType(sheet.cell_value(0,j))] = valueelse:data[TransformationType(sheet.cell_value(0,j))] = valueadict[TransformationType(sheet.cell_value(i,0))]= datadata = json.dumps(adict,indent=1,ensure_ascii=False)_json_save_path = os.getcwd() + "/" + name + '.json'f=open(_json_save_path,'w')f.write(data)f.close()print("already create json:" + path)return data,_json_save_pathdef isJsonString(str):try:eval(str)except Exception as e :return Falsereturn Truedef TransformationType(var):if isinstance(var ,float) : #type(var) == 'float':str1 = int(var)elif isinstance(var, str): #type(var) == 'unicode':str1 = varelse:raise Exception("type is not deal")str1 = varreturn str1

(三)Python字典格式转json格式

        将读取的excel数据存入字典。

    adict = {}for i in range(1,sheet.nrows):data = {}for j in range(0,sheet.ncols):value = TransformationType(sheet.cell_value(i,j))if  isinstance(value , str):if isJsonString(value):data[TransformationType(sheet.cell_value(0,j))] = eval(value)else:data[TransformationType(sheet.cell_value(0,j))] = valueelse:data[TransformationType(sheet.cell_value(0,j))] = valueadict[TransformationType(sheet.cell_value(i,0))]= data

         转字典数据换成json格式。这里需要注意需要增加ensure_ascii=False参数,否则显示字符串的时候会出现乱码

data = json.dumps(adict,indent=1,ensure_ascii=False)

(四)保存json格式文件并把结果显示在界面上

        把转换后的json文本显示到程序界面,文本可拷贝可编辑。

# 点击,转换文件
def start_transform_file():global _label_filepath_text,_text,_label_state_text_file_path = _label_filepath_text.get()_file_type_list = [".xlsx", ".xls"]if _file_path is not None:if os.path.isfile(_file_path):filesp = os.path.splitext(_file_path)for k in _file_type_list:if filesp[1] == k:filename = os.path.basename(_file_path)_json_data = excel2json.readExecl(_file_path, filename.split('.')[0])_text.insert("end",_json_data[0])_label_state_text.set("转换完毕,json文件存放地址为:"+_json_data[1])

三、下载地址

(一)excel转json小工具.exe,可执行文件下载地址

https://download.csdn.net/download/qq616491978/87097155

(二)excel转json小工具源码下载地址

https://download.csdn.net/download/qq616491978/87097172

相关内容

热门资讯

幼儿园园长新年寄语 幼儿园园长新年寄语尊敬的家长、亲爱的老师、可爱的孩子们:  充满着爱心、感动与不平凡的马年和我们渐行...
大年初八开工大吉祝福语录 大年初八开工大吉祝福语录  在我们平凡的日常里,要用到祝福语的情况还是蛮多的,祝福语的种类很多,可分...
每天一句话经典心情语录大全精...   有时候,眼睛看不到的心却看得到;有时候,你给别人最简单的建议,却是自己最难做到的。下面是小编为大...
新年寄语:新年空间留言寄语 新年寄语:新年空间留言寄语(精选80句)  在生活、工作和学习中,大家都用到过寄语吧,借助寄语人们可...
唯美晚安寄语 常用唯美晚安寄语汇总(精选115句)  挫折是一块石头,对于弱者来说它是拌脚石,让你停步不前。而对于...
大学老师评语 大学老师评语大学老师评语13.你朴实无华,思想健康,积极上进,你身处逆境,却永不退缩,你不追求享受、...
说谎的经典语录 说谎的经典语录  语录指一个人的说话记录,一般用于正式文体,通常为了说明一段时间内某人的所说句子和语...
新人入职感言 新人入职感言(通用10篇)  在平日的学习、工作或生活中,我们常常会对人或者事物有新的思考,这时就可...
几米 《地下铁》经典语录   1、我努力寻找希望,生怕幸运就在身边,却被我粗心错过  ——几米《地下铁》  2、在这个城市里,...
《我的前半生》经典台词语录   《我的前半生》,台词美到足以改写后半生,以下是CN人才小编搜集并整理的有关内容,希望对大家有所帮...
小学三年级学生期末评语 小学三年级学生期末评语(通用200句)  在日常学习、工作和生活中,大家都用到过评语吧,评语能帮助被...
期末教师给学生的评语 期末教师给学生的评语15篇  在现实生活或工作学习中,许多人都有过写评语的经历,对评语都不陌生吧,评...
初一班主任寄语 初一班主任寄语  无论是身处学校还是步入社会,要用到寄语的情况还是蛮多的,通过寄语人们可以心中的所思...
学习进步的励志语录 学习进步的励志语录  在日复一日的学习、工作或生活中,大家都听说过或者使用过一些比较经典的语录吧,语...
安全的文章美文 有关安全的文章美文  安全是人与生俱来的追求,是人民群众安居乐业的前提,是维持社会稳定和经济发展的保...
在教师节发的朋友圈文案 在教师节发的朋友圈文案(精选270句)  随着社交网络的普及,越来越多人会在社交平台上发布文案,文案...
母亲节的感人说说 母亲节的感人说说(精选50句)  随着微信、微博、QQ等社交网络平台的快速发展,越来越多人钟情于在线...
经典美文分享 经典美文分享(精选24篇)  你所读的所有东西都会给你的大脑带来新的信息,而你永远无法知道什么时候它...
描写山的古诗词摘抄 描写山的古诗词摘抄  中国朴素的旅游地理最早见之于古代诗歌中。从《诗经》开始,我国历代文人墨客就喜欢...
美文赏析:猫儿山游记 美文赏析:猫儿山游记  还是清明那会儿,桂林一直是个多雨的季节,想要出去远一点玩一趟,有时还真不容易...