python 读取excel 并存入二维列表

昨天在处理python读取excel的时候遇到了点小问题。分享一下~

起初想法是把excel里面的数据读取并存在二维数组返回,供后面处理使用

def readexcel(exceldir):
    os.chdir(exceldir)
    try:
        f1 = xlrd.open_workbook('sggwhu_stationinfo.xlsx')
    except:
        print('There is no excel named sggwhu_stationinfo.xlsx\n Please cheek ! \n')
    sheet = f1.sheet_by_index(0)                 # 读sheet,这里取第一个sheet
    rows  = sheet.nrows                          # 获得行数
    infor = [[] for i in range(rows)]            # 定义了一个二维列表,行数等于sheet的行数。
    for i in range(1, rows):                     # 去掉表头,从第二行开始读
        for j in range(1, 5):                    # 因为第一列是序号,数据从第二列开始读
            infor[i-1][j-1]=sheet.cell(i,j).value# 给二维列表赋值
    print(infor)
    return infor

但是有报错:

开始以为是超界了反复试都没用,后来把infor输出来才意识到cell返回的是一个数组,而每次赋值给一个数组当然会超界

每次返回元素才行,但没找到相关的excel函数,于是将代码修改了一下,每次就接收数组。

sheet.cell(i, j) 是读取 i 行 j 列的表格元素,为了得到一行的值,改用sheet.row_values(i) 得到 i 行的元素。

注意返回的也是数组形式,因此循环读取一定要定义二维列表。

def readexcel(exceldir):
    os.chdir(exceldir)
    try:
        f1 = xlrd.open_workbook('sggwhu_stationinfo.xlsx')
    except:
        print('There is no excel name sggwhu_stationinfo.xlsx\n Please cheek ! \n')
    sheet = f1.sheet_by_index(0)             # 读sheet,这里取第一个
    rows  = sheet.nrows                      # 获得行数
    data  = [[] for i in range(rows)]        # 去掉表头,从第二行读数据
    for i in range(1, rows): 
        data[i-1] = sheet.row_values(i)[1:5] # 去掉序号,取四个数据
    #for var in data:
        #print(var)
    return data

记得要import xlrd

 

这样的话就OK了

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值