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\n\n\n"
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 + ' = {\n'
# 处理id和index的特殊行
writeData = writeData + '\t' + '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 + '} ,\n'
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 + '\t' + '["' + 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 + '} ,\n'
else :
writeData = writeData + '}\n\n'
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初体验
Python导出Excel为Lua/Json/Xml实例教程(三):终极需求的更多相关文章
- Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验
Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...
- Python导出Excel为Lua/Json/Xml实例教程(一):初识Python
Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...
- 导出Excel/Pdf/txt/json/XML/PNG/CSV/SQL/MS-Word/ Ms-Powerpoint/等通过tableExport.js插件来实现
首先去我的云盘下载需要的js: 链接:https://pan.baidu.com/s/13vC-u92ulpx3RbljsuadWw 提取码:mo8m 页面代码: <!DOCTYPE html& ...
- phpExcel导出excel加超级链接的实例代码[转]
phpexcel实现的导出excel文件的代码,且可以在excel文件中加入超级链接. 说明:PHPExcel的开发包Tests目录有详细使用实例.以下代码支持中文,注意文件编码,文件保存为utf-8 ...
- springMVC中使用POI方式导出excel至客户端、服务器实例
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 这里的方法支持导出excel至项目所在服务器,或导 ...
- 序列化各个类型成JSON XML实例
LitJson组件序列化请参考http://www.cnblogs.com/leee/p/4437230.html XML序列化请参考http://www.cnblogs.com/leee/p/424 ...
- python 实现excel转化成json文件
1.准备工作 python 2.7 安装 安装xlrd -- pip install xlrd 2. 直接上代码 import xlrd from collections import Ordered ...
- python读取excel数据为json格式(兼容xls\xlsx)
做自动化时需要从excel读取数据: 本文实现将excel文件数据读取为json格式,方便自动化调用 读取xls文件 使用xlrd读取xls文件代码: import xlrd def read_xls ...
- POI导出excel项目(webwork)实例
后台action: public String exportExcel(){ this.setUserList(this.getUserService().findUserInfosByGroupID ...
随机推荐
- PHP日志压缩下载
主要实现了在后台查看日志列表及打包下载功能. 由于用到了PHP压缩功能,特此记录下. 压缩下载类: Hzip.php <?php /** * Created by PhpStorm. * @au ...
- kqueue例子
网络服务器通常都使用epoll进行异步IO处理,而开发者通常使用mac,为了方便开发,我把自己的handy库移植到了mac平台上.移植过程中,网上居然没有搜到kqueue的使用例子,让我惊讶不已.为了 ...
- WCF学习之旅—HTTP双工模式(二十)
WCF学习之旅—请求与答复模式和单向模式(十九) 四.HTTP双工模式 双工模式建立在上文所实现的两种模式的基础之上,实现客户端与服务端相互调用:前面介绍的两种方法只是在客户端调用服务端的方法,然后服 ...
- 【.net 深呼吸】写入日志文件
记录日志,一方面可以把日志写入系统的日志存储中,可在“事件查看器”窗口中查看:如果不喜欢写到系统的日志文件中,也可以写到自己定义的文件中. 其实,日志文件就是文本文件,可能有朋友会想到用写入文本文件的 ...
- 【Win 10应用开发】AdaptiveTrigger在自定义控件中是可以触发的
前些天,看到有网友给我留言,说AdaptiveTrigger在自定义控件(模板化控件)中不能触发.因为当时我正在写其他的代码,就没有去做实验来验证,于是我就给这位网友提了使用GotoVisualSta ...
- Android Studio 入门
本文适用于从Eclipse转AndroidStudio的开发者 最近打算写一个系列的android初级开发教程,预计40篇以上的文章,结合我实际工作中的经验,写一些工作中经常用到的技术,让初学者可以少 ...
- call,apply,bind的用法
关于call,apply,bind这三个函数的用法,是学习javascript这门语言无法越过的知识点.下边我就来好好总结一下它们三者各自的用法,及常见的应用场景. 首先看call这个函数,可以理解成 ...
- spring源码分析之<context:component-scan/>vs<annotation-config/>
1.<context:annotation-config/> xsd中说明: <xsd:element name="annotation-config"> ...
- Vertica环境安装R-Lang包提示缺少libgfortran.so.1
环境:RHEL 6.4 + Vertica 7.0.0-11.最终确认安装compat-libgfortran-41-4.1.2-39.el6.x86_64.rpm即可解决. # rpm -ivh v ...
- [Spring]支持注解的Spring调度器
概述 如果想在Spring中使用任务调度功能,除了集成调度框架Quartz这种方式,也可以使用Spring自己的调度任务框架. 使用Spring的调度框架,优点是:支持注解(@Scheduler),可 ...