zoukankan      html  css  js  c++  java
  • Python导出Excel为Lua/Json/Xml实例教程(三):终极需求

    相关链接:

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验

    Python导出Excel为Lua/Json/Xml实例教程(三):终极需求

    一、终极需求

    前文的实例都是比较基础的例子,现在来一个贴近真实项目的实例。

    下图是要操作的表格:

    需求列表:

    • Excel中导出的数据要有类型区分,比如int,string等
    • 第一行为列的中文名称,这个名称只是给策划看,不导出
    • 每张表右侧可以随便增加注释,注释不导出
    • 需要字段ID和该ID在表中的index的一一对应数据,便于程序索引

    二、解决方案

    主要实现部分代码如图:

    三、处理结果

    执行脚本后打开生成的lua文件,可以看到完美解决了列出的需求。

    四、全部代码

    # -*- coding: UTF-8 -*- 
    
    # Author:Krisik
    # 博客地址:http://www.cnblogs.com/krisirk/
    
    import xlrd
    
    fileOutput = open('Configs.lua','w')
    
    # 让py可以读取文件中的中文
    import sys
    reload(sys)
    sys.setdefaultencoding("utf-8")
    
    # 可以在这里写一些固定的注释代码之类的
    writeData = "-- @author:kris
    
    
    "
    
    workbook = xlrd.open_workbook('Configs.xls')
    print "There are {} sheets in the workbook".format(workbook.nsheets)
    
    for booksheet in workbook.sheets():
    	# print "Current Booksheet:[" + booksheet.name + "]"
    	writeData = writeData + 'AT' + booksheet.name + ' = {
    '
    
    	# 处理id和index的特殊行
    	writeData = writeData + '	' + 'keys' + ' = ' + '{ ' 
    	for row in xrange(booksheet.nrows):
    		if  row <= 2 :
    			continue
    		else :
    			Id    = str(int(booksheet.cell(row, 1).value))
    			index = str(int(booksheet.cell(row, 0).value))
    			writeData = writeData + '[' +Id + '] = ' + index + ' , '
    	else:
    		writeData = writeData + '} ,
    '		
    
    	for col in xrange(booksheet.ncols):
    		# 如果第二行为空,则此列为注释列
    		if not any(booksheet.cell(1,col).value) :
    			continue
    
    		# 第三行为参数类型定义
    		colType = booksheet.cell(2, col).value
    		for row in xrange(booksheet.nrows):
    			value = booksheet.cell(row, col).value
    			if	row == 0 or row == 2:
    				continue
    			elif  row == 1 :
    				writeData = writeData + '	' + '["' + value + '"]' + ' = ' + '{ '  
    			else :
    				if   colType == "int" :
    					writeData = writeData + str(int(booksheet.cell(row, col).value)) + ' , '
    				else : 
    					writeData = writeData + '"' + str(booksheet.cell(row, col).value) + '" , '
    		else :
    			writeData = writeData + '} ,
    '
    	else :
    		writeData = writeData + '}
    
    '
    else :
    	fileOutput.write(writeData)
    
    fileOutput.close()
    
    

    五、最后

    到这里,关于操作excel的文章就结束了,相信对于绝大部分的需求或者更复杂的需求都能游刃有余了。

    tips:通过代码生成Excel文件可以参考xlwt。

    xlwt是python用来写excel的工具,跟xlrd对应。

    更多链接:

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验

    如果有任何疑问或是建议,欢迎给我留言!


    作者:Krisirk

    出处:http://www.cnblogs.com/krisirk

    所有文章若非标注转载,均为原创,文中观点仅代表作者个人。

    原创文章版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

  • 相关阅读:
    JQ轮播
    JS中正则匹配的三个方法match exec test的用法
    JavaScript 表单验证
    JS 控制CSS样式表
    AJAX 的简单用法:
    shell之运用sed将其值存到变量
    shell之创建文件及内容
    修复vbox的共享文件夹的符号链接错误
    字符转码
    php魔术方法
  • 原文地址:https://www.cnblogs.com/krisirk/p/4979462.html
Copyright © 2011-2022 走看看