python实现excel转json的例子[通俗易懂]

python实现excel转json的例子[通俗易懂]python实现excel转json的例子(改进版)由于数值策划给出数值是excel表格,但前台flash程序用的又是json格式。服务器也用了json格式,而json又是utf-8编码的,用C++实现,太痛苦。鉴于此,尝试用python实现看看。没想到,python实现确实很简单,一个多小时搞定(有搜索事半功倍啊)。今天我又对它做了一点改进。主要1、是支持float和多表格;2、在exc…

大家好,又见面了,我是你们的朋友全栈君。

python实现excel转json的例子(改进版)

由于数值策划给出数值是excel表格,但前台flash程序用的又是json格式。服务器也用了json格式,而json又是utf-8编码的,用C++实现,太痛苦。 鉴于此,尝试用python实现看看。没想到,python实现确实很简单,一个多小时搞定(有搜索事半功倍啊)。 今天我又对它做了一点改进。主要1、是支持float和多表格;2、在excel中用”tablelist”描述要转的表和目标json的文件名称(如图)
python实现excel转json的例子[通俗易懂]。
修改后的代码:
# -*- coding: utf-8 -*-

# 这段代码主要的功能是把excel表格转换成utf-8格式的json文件
# lastdate:2011-8-15 14:21 version 1.1 
import os
import sys
import codecs
import xlrd #http://pypi.python.org/pypi/xlrd
if len(sys.argv) != 2 :
    print "argv count != 2, program exit"
    print "USAGE: a.py excelfilename"
    exit(0)
print "excel to json"
excelFileName = sys.argv[1]
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 table2jsn(table, jsonfilename):
    nrows = table.nrows
    ncols = table.ncols
    f = codecs.open(jsonfilename,"w","utf-8")
    f.write(u"{\n\t\"list\":[\n")
    for r in range(nrows-1):
        f.write(u"\t\t{ ")
        for c in range(ncols):
            strCellValue = u""
            CellObj = table.cell_value(r+1,c)
            if type(CellObj) == unicode:
                strCellValue = CellObj
            elif type(CellObj) == float:
                strCellValue = FloatToString(CellObj)
            else:
                strCellValue = str(CellObj)
            strTmp = u"\""  + table.cell_value(0,c) + u"\":"+ strCellValue
            if c< ncols-1:
                strTmp += u", "
            f.write(strTmp)
        f.write(u" }")
        if r < nrows-2:
            f.write(u",")
        f.write(u"\n")
    f.write(u"\t]\n}\n")
    f.close()
    print "Create ",jsonfilename," OK"
    return

data = xlrd.open_workbook(excelFileName)
table = data.sheet_by_name(u"tablelist")
rs = table.nrows
for r in range(rs-1):
    print table.cell_value(r+1,0), "==>", table.cell_value(r+1,2)
    desttable = data.sheet_by_name(table.cell_value(r+1,0))
    destfilename = table.cell_value(r+1,2)
    table2jsn(desttable,destfilename)

print "All OK"

 http://www.cppblog.com/zdhsoft/archive/2011/08/10/152897.html?opt=admin

转载于:https://www.cnblogs.com/navy-wang/p/3274114.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142055.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 网页音乐播放器总结[通俗易懂]

    网页音乐播放器总结[通俗易懂]总结一下Vue实战的网页音乐播放器首先是设计出主体的整个框架分为四个部分最左边的歌曲列表,中间的唱片,最右边的热门评论显示以及下方的播放条然后开始准备进行功能的实现首先是需要导入Vue的依赖以及axios的js网络依赖库<!–开发环境版本,包含了有帮助的命令行警告–><scriptsrc=”https://cdn.jsdelivr.net/npm/vue/dist/vue.js”></script><!–官网提供的axio

    2022年6月17日
  • [新详细]让Keil5续签到2032年的办法,不可商用

    [新详细]让Keil5续签到2032年的办法,不可商用使用方法和以前的版本一样,MDK或者C51以及ARM等均适用,软件来自网络,如有纠纷请留言。仅供学习与参考,商业用途请购买正版。非新手,直接看文章最后流程打开你的Keil主页面,添加证书激活的位置在File→LicenseManagement复制CID将CID复制进软件,通过Target选择你用的类型,复制后,点击Generate计算出新的licenseID码复制…

    2022年6月1日
  • java分页工具集合「建议收藏」

    java分页工具集合「建议收藏」java分页工具集合说明一、PageHelper(1)pom(2)配置(3)使用正确使用错误使用二、mybatis-plus的分页插件(1)pom(2)配置(3)使用三、自定义工具类(1)创建分页工具类(2)使用说明更新时间:2020/11/617:36,更新完基本内容本文现对目前常见的java分页工具进行一次总结与记录,主要是基于自己的主观来进行总结,本文会持续更新,不断地扩充注意:本文仅为记录学习轨迹,如有侵权,联系删除一、PageHelper这个工具只要是使用过mybatis的人基本都听

    2022年10月3日
  • Java面试问题总结带答案(多线程)

    Java面试问题总结带答案(多线程)问题总结(均在网上搜索和书本摘抄所得,如若侵权请联系立即删除)多线程开启线程的方式说说进程,线程,协程之间的区别线程之间是如何通信的?什么是Daemon线程?它有什么意义?集合Hashmaphash的概念hash冲突hash算法应该考虑哪些点什么是HashMap,什么时候选择HashMap?多线程开启线程的方式说说进程,线程,协程之间的区别1.进程:通俗理解一个运行起来的程序或者软件叫做进程。进程是操作系统资源分配的基本单位。默认情况下一个进程会提供一个线程(主线程),线程依附在进程里,

    2022年8月27日
  • 【vim 多行注释

    【vim 多行注释vim常用命令之多行注释和多行删除vim中多行注释和多行删除命令,这些命令也是经常用到的一些小技巧,可以大大提高工作效率。1.多行注释:1.首先按esc进入命令行模式下,按下Ctrl+v,进入列(也叫区块)模式;2.在行首使用上下键选择需要注释的多行;3.按下键盘(大写)“I”键,进入插入模式;4.然后输入注释符(“//”、“#”等);5.最后按下“Esc”键。注:在按下esc键后,会稍等一会才会出现注释,不要着急~~时间很短的2.删除多行注释:

    2022年6月18日
  • nessus8.15激活成功教程_etc怎么看激活成功了没有

    nessus8.15激活成功教程_etc怎么看激活成功了没有0x01下载NESSUS官网https://www.tenable.com/downloads/nessus离线插件all:https://plugins.nessus.org/offline

    2022年8月6日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号