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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 信道容量计算公式_信道均衡算法

    信道容量计算公式_信道均衡算法信道带宽=符号率*符号数*(188/204)注释:符号率&lt–&gt频宽(下行欧标频宽8MHz,上行有1.6MHz,3.2MHz,6.4MHz三种频宽);符号数&lt–&gt调制方式(符号数=Log2~调制方式,如QAM64的符号数为6,2的6次方=64)=====================================================…

    2022年8月31日
    5
  • 嘘…偷偷教你破解“朋友圈三天可见”「建议收藏」

    嘘…偷偷教你破解“朋友圈三天可见”「建议收藏」点击上方[全栈开发者社区]→右上角[…]→[设为星标⭐]在微信公开课上,腾讯高级执行副总裁、微信事业群总裁张小龙说:朋友圈状态设置三天可见的人数超过了一亿人,这个开关是微信里使用率最…

    2022年4月28日
    96
  • lua学习之table类型

    关系表类型,这是一个很强大的类型。我们可以把这个类型看作是一个数组。只是 C语言的数组,只能用正整数来作索引; 在Lua中,你可以用任意类型的值来作数组的索引,但这个值不能是&#1

    2021年12月25日
    44
  • Map集合中value()与keySet()、entrySet()区别

    Map集合中value()与keySet()、entrySet()区别在Map集合中values():方法是获取集合中的所有的值—-没有键,没有对应关系,KeySet():将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。keySet():迭代后只能通过get()取keyentrySet():Set<Map.Entry<K,V>>ent…

    2022年5月30日
    39
  • java中stringBuilder常用方法[通俗易懂]

    java中stringBuilder常用方法[通俗易懂]String对象是不可改变的。每次使用System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类。例如,当在一个循环中将许多字符串连接在一起时,使用StringBuilder类可以提升性能。通过用一个重载的构造函数方法初始化变量,可以创建StringBuild

    2022年7月17日
    27
  • JavaWeb – GET 请求中 URL 的最大长度限制(附:解决方案)[通俗易懂]

    JavaWeb – GET 请求中 URL 的最大长度限制(附:解决方案)[通俗易懂]今天在写一个PHP相应JSOUP请求的功能时,发现当URL中包含的请求参数过长时会返回414错误。浏览器1、IEIE浏览器(MicrosoftInternetExplorer)对URL长度限制是2083(2K+53),超过这个限制,则自动截断(若是form提交则提交按钮不起作用)。中文字符的话只有2083/9=231个字符。2、Firefoxfi…

    2022年8月24日
    17

发表回复

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

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