用pyhton处理Excel

由于不会使用Excel相关编辑功能,经常需要处理一年级计算机科学导论学生的成绩。记录学习用Pyhton处理Excel的学习过程。


主要用到xlrd和xlwt以及xlutils模块,这几个模块需要下载安装使用,并非pyhton自带模块。可以使用pip安装,也可以直接使用conda。

使用xlrd模块(介绍几个常用的函数功能)


 -  (1)file=r"C:\Users\Mem_NanWan\Desktop\jiang\1722266.xlsx"#其中加r的目的是告诉编译器这个string是个raw string,不要转义。如果不加r,则需要在\前加转义字符,即双斜杠\\
 - (2)book=xlrd.open_workbook()#打开excel表book实例化对象
 - (3)sheetList=book.sheets()#因为一个excel有多个sheet,从而返回一个sheet相关列表。可以通过下表返回每待处理的sheet即disposeSheet=sheetList[i]
 - (4)disposeSheet=book.sheet_by_index(index)#通过索引返回sheet
 - (5)disposeSheet=book.sheet_by_name(name)#通过sheet名字返回特定的sheet
 - (6)disposeSheet.name()#返回指定sheet的名字
 - (7)disposeSheet.nrows#返回指定sheet的行数
 - (8)disposeSheet.ncols#返回指定sheet的列数
 - (9)disposeSheet.row(r)#获取指定行,返回Cell对象的list  r代表行数
 - (10)disposeSheet.row_values(r)#获取指定行的值,返回list(9)(10)区别在于(9)返回的包括数据类型,而(10)单单只是值.具体见下面代码实现。(11)(12)相同
 - (11)disposeSheet.col(c)#获取指定列,返回Cell对象的list  c代表列数
 - (12)disposeSheet.col_values(c)#获取指定列的值,返回list
 - (13)disposeSheet.cell(r, c)#获取指定单元格的对象
 - (14)disposeSheet.cell_value(r, c)#获取指定单元格的值

def readExcel():
    # 前三步打开指定sheet
    file = r"C:\Users\Mem_NanWan\Desktop\0610\1722268final.xlsx"
    book = xlrd.open_workbook(file)
    disposeSheet = book.sheet_by_index(0)
    # 获取第五行的对象和值
    rowObJ=disposeSheet.row(6)
    rowValue=disposeSheet.row_values(6)
    print("rowObj",rowObJ)
    print("rowValue",rowValue)
    #获取某个单元格的对象和值
    cellObj=disposeSheet.cell(6, 3)
    cellValue=disposeSheet.cell_value(6, 3)
    print("cellobj  (5,3)",cellObj)
    print("cell_value (5,3)",cellValue)
以下为控制台输出:
rowObj [number:6.0, number:888866666.0, text:'南湾', number:1703201000.0, text:'20.0', text:'28.0', text:'13.33', text:'36.0', text:'24.0', text:'12.0', text:'28.0', empty:'', text:'1400910125', text:'100.0', empty:'', empty:'', empty:'', empty:'', number:48.0, empty:'', empty:'', empty:'']
rowValue [6.0, 888866666.0, '南湾', 1703201000.0, '20.0', '28.0', '13.33', '36.0', '24.0', '12.0', '28.0', '', '1400910125', '100.0', '', '', '', '', 48.0, '', '', '']
cellobj  (5,3) number:1703201000.0
cell_value (5,3) 1703201000.0
可以明显看到对象和值的区别.

xlwt模块,值的注意的是这个只能创建新的sheet进行写数据,不能向已有数据表写数据,切记。这个模块没有open_Workbook()功能


 - book= xlwt.Workbook(encoding='utf-8')#默认编码格式为ascii码,utf_8支持中文.
 - book.add_sheet(filename)#添加了一个名为name的sheet表
 - disposeSheet=book.sheet_by_index(index,cell_overwrite_ok=True)#得到sheet对象.表的单元格默认是不可重复写,设置为True,可以重复写
 - disposeSheet.write(r, c, vlaue)#向cell(r,c)写入值
 - book.save(filename)#切记要保存

def writeExcel():
    book = xlwt.Workbook(encoding='utf-8')
    disposeSheet = book.add_sheet('mem_nanWan', cell_overwrite_ok=True)
    for i in range(5):
        for j in range(5):
            tempVal=random.randint(0,10)
            disposeSheet.write(i, j, tempVal)
    #保存文件
    book.save(r"C:\Users\Mem_NanWan\Desktop\0610\randtest.xls")
    book=xlrd.open_workbook(r"C:\Users\Mem_NanWan\Desktop\0610\randtest.xls")
    disposeSheet=book.sheets()[0]
    rowLen=disposeSheet.nrows
    for i in range(rowLen):
        rowValue=disposeSheet.row_values(i)
        print(i,'row value',rowValue)
#控制台输出
0 row value [8.0, 0.0, 6.0, 6.0, 1.0]
1 row value [7.0, 1.0, 7.0, 10.0, 0.0]
2 row value [0.0, 10.0, 5.0, 0.0, 0.0]
3 row value [9.0, 3.0, 4.0, 9.0, 7.0]
4 row value [1.0, 6.0, 10.0, 7.0, 8.0]

关于xlutils模块和csv处理以后用到再补充

参考文献

使用Python处理Excel文件
Python—对Excel进行读写操作

猜你喜欢

转载自blog.csdn.net/liujiang0529/article/details/80645122