python 简单解析excel文件

本文介绍了如何使用Python的xlrd库解析Excel文件。通过引入xlrd库,可以打开Excel文件,获取工作表,并通过行数和列数进行数据读取。具体方法包括使用sheet_by_index、sheet_by_name获取工作表,通过row_values和col_values获取行列数据,以及cell方法获取单元格的具体值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         目前的公司的项目需要将策划给的excel文件弄成xml格式。上网搜了下,感觉用python 写个脚本转换比较方便。第一步学习下看python是如何解析excel的。首先需要安装python和第三方库xlrd。不多说了,自己使用的python是2.6版本。在Windows下解析。

       简单说下解析的大致步骤:

1. 引入xlrd包,调用他的open_workbook方法打开excel文件读取里面的数据,这个方法参数很多,主要是第一个,传入要解析的excel文件。

data = xlrd.open_workbook("自己的excel路径")


2.然后需要获取excel中的某个工作表,xlrd提供了三种方法:

table = data.sheets()[index] index就是就是左下角的工作表的索引顺序,从0开始。

table = data.sheet_by_index(index) 看下他们的实现发现这个和上面的其实一样的,只是上一种是data.sheets()或获取此excel中的所有表,生成一个list,再通过列表的下标取到我们需要的表。

table = data.sheet_by_name(u'sheet_name'),这个是通过表的名称来获取的


3.可以通过table.nrows来获取表的行数,table.ncols来获取表的列数


4.这样可以获取到整行的数据 talbe.row_values(index) ,index就是要获取的所在行数,返回的是一个list列表保存数据。通用的道理,table.col_values(index),就是index列的数据。返回list。


5.获取单元格的数据。通过table.cell(row_index, col_index)可以得到excel中row_index行col_index列的数据,这样得到的其实是这样的数据:类型: 字段名(unicode编码),我们这里使用的是utf-8编码,比如我们这个excel表中的第一行第一列的table.cell(0, 0)得到的就是:text:u'itemID'。要是获取值就使用table.cell(row_index, col_index).value即可。


由于我们这里只是简单的解析出已经存在的excel表,所以非常简单。写了非常简单的列子,将解析的数据打印出来。先看看excel文件内容


再看看代码:

#! encoding=utf-8

import xlrd


def open_excel(file):
    try:
        data = xlrd.open_workbook(file)
        return data
    except Exception, e:
        print str(e)
        

def excel_table_byindex(file, colnnameindex=0, by_index=0):
    data = open_excel(file)

    table = data.sheets()[by_index]
    #行数
    nrows = table.nrows
    #列数
    ncols = table.ncols

    #打印出每个单元格的数据
    for nrow in range(0, nrows):
        #rownames = table.row_values(nrow)
        #print rownames
        for ncol in range(0, ncols):
            #colnames = table.col_values(ncol)
            #print colnames 
            print table.cell(nrow, ncol).value


if __name__ == "__main__":
    excel_table_byindex('D:\daoju.xlsx')

代码是非常简单的,由于结果 很多,只是截取了一部分看看

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值