python excel

1、获取excel中所有sheet的名称

1 import xlrd
2 from xlutils.copy import copy
3 
4 def getSheetNames(filename):
5     #打开excel
6     workbook =  xlrd.open_workbook(filename)
7     nameList = workbook.sheet_names()
8     return (nameList)

2、获取excel某一个sheet的总行数

1 def getrows(filename, sheetname):
2     #打开excel
3     workbook =  xlrd.open_workbook(filename)
4     #根据名字获取指定sheet页
5     sheet=workbook.sheet_by_name(sheetname)
6     #获取sheet页的行数和列数
7     rows = sheet.nrows
8     #print(sheet.ncols)#列数
9     return (rows)

3、向已存在的excel写入(或修改)

'''********************************************************
    Func Name:    writeResToExcel
    Para:         filename  :  excel路径
                  sheetname :  sheet名称
                  row       :  行
                  col       :  列
                  value     :  值
    Desc:         向已存在的excel写入(或修改)某行某列的值
    Date:         20190711
    Auth:         yanerfree
********************************************************'''
def writeResToExcel(filename, sheetname, row, col, value):
    #xlutils:修改excel
    #打开excel
    workbook1 =  xlrd.open_workbook(filename)
    workbook2 = copy(workbook1)#拷贝一份原来的excel
    # print(dir(workbook2))
    #根据名字获取指定sheet页
    sheet=workbook2.get_sheet(sheetname)
    sheet.write(row, col, value)
    workbook2.save(filename)
    #sheet = book2.get_sheet(0)#获取第几个sheet页,book2现在的是xlutils里的方法,不是xlrd的
    print("*****   结果写入excel成功   *****")

xlrd 与 copy的excel操作有点区别:

1)获取sheet方法:

xlrd打开的文件:

sheet= workbook1.sheets()[0] #通过索引顺序获取
sheet= workbook1.sheet_by_index(0) #通过索引顺序获取
sheet= workbook1.sheet_by_name(u'Sheet1')#通过名称获取

copy后的文件:

workbook2 = copy(workbook1)#拷贝一份原来的excel

sheet=workbook2.get_sheet('Sheet1')#根据名字获取指定sheet页
sheet=workbook2.get_sheet(0)#通过索引顺序获取

2)获取sheet的行数

xlrd打开的文件:

rows = sheet.nrows

cols = sheet.ncols

copy后的文件不能这样获取

 

注意:xlrd模块0.8版本后不支持以xlsx为后缀名文件,所以使用这个方法的时候,excel要用xls格式的,不然会导致保存的文件无法打开

 

posted @ 2019-07-30 14:34  yanerfree  阅读(232)  评论(0编辑  收藏  举报