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 ...
随机推荐
- Module Zero学习目录
Module-Zero是实现了ASP.NET Boilerplate框架抽象概念的模块,对于企业web应用也添加了一些有用的东西: 实现了ASP.NET Identity框架的用户和角色管理. 提供了 ...
- Entity Framework 6 Recipes 2nd Edition(13-5)译 -> 使POCO的修改追踪更高
问题 你正在使用POCO,你想提高修改跟踪的性能,同时使内存消耗更少.另外,你想通过EF的CodeFirst方式来实现. 解决方案 假设你有一个关于Account(帐户)和相关的Payments(支付 ...
- xp搭建IIS出现HTTP 500错误-2147467259 (0x80004005)
安装IIS后访问localhost页面, 提示The remote procedure call failed and did not execute,再刷新变为:-2147467259 (0x800 ...
- PagerSlidingTabStrip介绍及使用,让ViewPager更绚丽
转载请注明出处http://blog.csdn.net/harryweasley/article/details/42290595,谢谢. 以前一直想着,ViewPager中间的那个横线怎么跟着屏幕的 ...
- MongoDB 安全和访问权限控制
MongoDB的访问控制能够有效保证数据库的安全,访问控制是指绑定Application监听的IP地址,设置监听端口,使用账户和密码登录 一,访问控制的参数 1,绑定IP地址 mongod 参数:-- ...
- jQuery-1.9.1源码分析系列(十六)ajax——jsonp原理
json jsonp 类型 "json": 把响应的结果当作 JSON 执行,并返回一个JavaScript对象.如果指定的是json,响应结果作为一个对象,在传递给成功处理函数 ...
- SQL Server Management Studio 无法修改表,超时时间已到 在操作完成之前超时时
在修改表时,保存的时候显示:无法修改表,超时时间已到 在操作完成之前超时时间已过或服务器未响应 这是执行时间设置过短的原因,可以修改一下设置便能把执行时间加长,以便有足够的时间执行完修改动作. 在 S ...
- ASP.NET MVC 利用IRouteHandler, IHttpHandler实现图片防盗链
你曾经注意过在你服务器请求日志中多了很多对图片资源的请求吗?这可能是有人在他们的网站中盗链了你的图片所致,这会占用你的服务器带宽.下面这种方法可以告诉你如何在ASP.NET MVC中实现一个自定义Ro ...
- 浏览器自动刷新——基于Nodejs的Gulp LiveReload与VisualStudio完美结合。
本文版权桂博客园和作者吴双共同所有,转载和爬虫请注明原文地址 http://www.cnblogs.com/tdws/p/6016055.html 写在前面 大家好我是博客园的蜗牛,博客园的蜗牛就是我 ...
- Entity Framework Plus 系列目录
Entity Framework Plus 系列文章计划的已经全部写完,可能还有其他功能没有写到,希望大家能够多动手,尝试一下使用,一定会给您带来一些帮助的.文章全部写完,也应该出一个目录方便查看,目 ...