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


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

    相关链接:

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

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

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

    一、什么是xlrd

    xlrd是python语言中读取excel的扩展工具,可以实现指定表单、指定单元格的读取。

    二、安装xlrd

    • 官网安装:到python官网http://pypi.python.org/pypi/xlrd下载模块安装,前提是已经安装了python 环境。

    • MacOS安装: $ sudo pip install xlrd

    三、基本用法

    1.读取excel文件

    workbook = xlrd.open_workbook('file.xls')

    2.获取excel中表单数量

    workbook.nsheets

    3.获取excel中的一个表单

    workbook.sheets()[i]
    workbook.sheet_by_index(i)
    workbook.sheet_by_name(u'Sheet1')
    
    

    4.获取行数

    sheet.nrows

    5.获取列数

    sheet.ncols

    6.获取整行数据

    sheet.row(i)

    7.获取整列数据

    sheet.col(i)

    8.获取单元格数据

    sheet.cell(i, j).value

    知道这么多,已经足够对Excel进行基本的操作和读取了。

    四、简单上手 - 遍历表中数据

    1.先来创建一个Excel表名为Configs.xls,然后填上一些数据如图:

    2.来段代码简单遍历并输出

    3.执行$ python test.py

    ** 可以看到终端上已经打印出了表中的所有单元格数据 **

    本段完整代码文本如下:

    # -*- coding: UTF-8 -*- 
    
    # Author:Krisik
    # 博客地址:http://www.cnblogs.com/krisirk/
    
    import xlrd
    
    workbook = xlrd.open_workbook('Configs.xls')
    print "There are {} sheets in the workbook".format(workbook.nsheets)
    for booksheet in workbook.sheets():
    	for col in xrange(booksheet.ncols):
    		for row in xrange(booksheet.nrows):
    			value = booksheet.cell(row, col).value
    			print value
    
    

    四、更进一步 - 按需求组合数据

    我们已经得到了所有单元格数据,接下来就是按照项目的需求,组合成你需要的格式的文件,无论是lua还是json还是xml,都不是问题,下面我将以导出lua为例。

    1.我将以第一行为Key,列的数据为Value进行排列,代码如下:

    执行$ python test.py后可以发现在同目录下创建了一个Configs.lua的文件,打开后显示:

    大功告成!

    完整代码文本如下:

    # -*- coding: UTF-8 -*- 
    
    # Author:Krisik
    # 博客地址:http://www.cnblogs.com/krisirk/
    
    import xlrd
    
    fileOutput = open('Configs.lua','w')
    
    # 可以在这里写一些固定的注释代码之类的
    writeData = "-- @author:kris
    
    
    "
    
    workbook = xlrd.open_workbook('Configs.xls')
    print "There are {} sheets in the workbook".format(workbook.nsheets)
    
    for booksheet in workbook.sheets():
    	writeData = writeData + 'AT' + booksheet.name + ' = {
    '
    	for col in xrange(booksheet.ncols):
    		for row in xrange(booksheet.nrows):
    			value = booksheet.cell(row, col).value
    			if  row == 0 :
    				writeData = writeData + '	' + '["' + value + '"]' + ' = ' + '{ '  
    			else :
    				writeData = writeData + '"' + str(booksheet.cell(row, col).value) + '" , '
    		else :
    			writeData = writeData + '} ,
    '
    	else :
    		writeData = writeData + '}
    
    '
    else :
    	fileOutput.write(writeData)
    
    fileOutput.close()
    
    

    四、最后

    在实际项目中无论是Excel还是导出格式都会比示例中的更复杂,但是只要掌握了基本的核心功能,剩下的无非是耐心实现罢了。

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


    作者:Krisirk

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

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

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

  • 相关阅读:
    ASP.NET编程的十大技巧
    C#学习心得(转)
    POJ 1177 Picture (线段树)
    POJ 3067 Japan (树状数组)
    POJ 2828 Buy Tickets (线段树)
    POJ 1195 Mobile phones (二维树状数组)
    HDU 4235 Flowers (线段树)
    POJ 2886 Who Gets the Most Candies? (线段树)
    POJ 2418 Cows (树状数组)
    HDU 4339 Query (线段树)
  • 原文地址:https://www.cnblogs.com/krisirk/p/4978063.html
Copyright © 2020-2023  润新知