zoukankan      html  css  js  c++  java
  • Excel操作

    一、读取excel中的内容

    students.xml里的内容如下:

    import xlrd
    
    book = xlrd.open_workbook('students.xls') #打开操作的文件
    sheet = book.sheet_by_index(0) #选择文件内的sheet页
    # sheet = book.sheet_by_name('sheet1') #获取sheert,同sheet_by_index,从0开始
    print(sheet.cell(0,0).value) #指定单元格的内容
    print(sheet.row_values(1))#取整行的数据
    print(sheet.col_values(0))#取整列的数据
    print(sheet.nrows) #总共多少行
    print(sheet.ncols) #总多少列
    
    运行结果:
    id
    ['1', '小花']
    ['id', '1', '2', '3']
    4
    2
    

     二、修改excel内容

    from xlutils import copy  #引用copy时,最好有这种方式
    import xlrd
    import os
    book = xlrd.open_workbook('students.xls')
    new_book = copy.copy(book) #修改文件时,最好不要再源文件上直接改
    sheet = new_book.get_sheet(0) #选择sheet页
    sheet.write(0,3,"score") #写入内容,行,列,内容
    sheet.write(0,4,"sex")#写入内容,行,列,内容
    os.rename('students.xls','students_bak1.xls') #先备份修改的文件内容,存在students_bak1.xls文件里
    new_book.save('students.xls')#将修改的内容,保存再students.xls里
    

      会在同目录下生成一个文件students_bak1.xls

     students_bak1.xls里为修改前文件students.xls里的内容,students.xls里是修改后的内容

    三、enumerate() 函数

    enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

    语法

    以下是 enumerate() 方法的语法:

    enumerate(sequence, [start=0])

    参数

    • sequence -- 一个序列、迭代器或其他支持迭代对象。
    • start -- 下标起始位置。

    返回值

    返回 enumerate(枚举) 对象。

    例子一:

    number = ['a','b','c','d']
    for index,i in enumerate(number,1):
        print(index,i)
    运行结果:
    1 a
    2 b
    3 c
    4 d
    

    例子二:

    data = [
    	["1","小花",99,100,98.5],#1
    	["2","小王",90,30.5,95],#
    	["3","小明",67.5,49.6,88]#
    ]
    
    for row,v in enumerate(data,1): #行序列从1开始,注意用法:入参为循环的对象+从几开始
        print(row,v)
    
    运行结果:
    1 ['1', '小花', 99, 100, 98.5]
    2 ['2', '小王', 90, 30.5, 95]
    3 ['3', '小明', 67.5, 49.6, 88]
    

      三、Excel有关的练习

    方法一:

    import xlwt
    
    book = xlwt.Workbook()
    sheet = book.add_sheet('sheet1')
    
    
    title = ['编号','姓名','语文成绩','数学成绩','英语成绩','总分','平均分']
    #处理表头
    row = 0
    for t in title:
        sheet.write(0,row,t)
        row+=1
    
    data = [
    	["1","小花",99,100,98.5],#1
    	["2","小王",90,30.5,95],#
    	["3","小明",67.5,49.6,88]#
    ]
    row = 1
    for v in data: #行v获取的["1","小花",99,100,98.5]
        col = 0
        sum_score = sum(v[2:])#算总分
        avg_score = round(sum_score / 3,2) #算平均分,保留2位小数
        v.append(sum_score) #把总分加到每个list里["1","小花",99,100,98.5]
        v.append(avg_score)#把平均分加到每个list里["1","小花",99,100,98.5]
        for value in v:
            sheet.write(row,col,value)
            col+=1
        row+=1
    
    book.save("students.xls")  #xls/xlsx 再wps都可以 但是excel得xls才可以
    

      方法二:enumerate自动加序列

    import xlwt
    
    book = xlwt.Workbook()
    sheet = book.add_sheet('sheet1')
    
    title = ['编号','姓名','语文成绩','数学成绩','英语成绩','总分','平均分']
    #处理表头
    row = 0
    for t in title:
        sheet.write(0,row,t)
        row+=1
    
    data = [
    	["1","小花",99,100,98.5],#1
    	["2","小王",90,30.5,95],#
    	["3","小明",67.5,49.6,88]#
    ]
    
    for row,v in enumerate(data,1): #行序列从1开始
        sum_score = sum(v[2:])#算总分
        avg_score = round(sum_score / 3,2) #算平均分
        v.append(sum_score)
        v.append(avg_score)
        for col,value in enumerate(v):
            sheet.write(row,col,value)
    
    book.save("students.xls")  #xls/xlsx 再wps都可以 但是excel得xls才可以
    

      

  • 相关阅读:
    383. Ransom Note
    598. Range Addition II
    453. Minimum Moves to Equal Array Elements
    492. Construct the Rectangle
    171. Excel Sheet Column Number
    697. Degree of an Array
    665. Nondecreasing Array
    视频网站使用H265编码能提高视频清晰度吗?
    现阶段的语音视频通话SDK需要解决哪些问题?
    企业远程高清会议平台视频会议系统在手机端使用的必备要求有哪些?
  • 原文地址:https://www.cnblogs.com/MLing/p/12966438.html
Copyright © 2011-2022 走看看