zoukankan      html  css  js  c++  java
  • python实现excel转json的例子

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

    由于数值策划给出数值是excel表格,但前台flash程序用的又是json格式。服务器也用了json格式,而json又是utf-8编码的,用C++实现,太痛苦。 鉴于此,尝试用python实现看看。没想到,python实现确实很简单,一个多小时搞定(有搜索事半功倍啊)。 今天我又对它做了一点改进。主要1、是支持float和多表格;2、在excel中用"tablelist"描述要转的表和目标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"{
    	"list":[
    ")
        for r in range(nrows-1):
            f.write(u"		{ ")
            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"
    ")
        f.write(u"	]
    }
    ")
        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

  • 相关阅读:
    谷歌浏览器解决跨域
    实现Linux共享Window文件
    linux安装显卡驱动
    jsduck 文档生成器
    linux 笔记
    Linux phpstorm 无法输入中文
    linux 安装composer
    Extjs动态生成表头(适用报表)
    关于git的配置与使用
    JSP解决中文乱码问题
  • 原文地址:https://www.cnblogs.com/navy-wang/p/3274114.html
Copyright © 2011-2022 走看看