zoukankan      html  css  js  c++  java
  • Python学习笔记(21)Excel操作相关模块(xlwt/xlrd/xlutils)

    一、写Excel

      

    import xlwt
    
    book = xlwt.Workbook()#建立工作簿
    sheet = book.add_sheet('sheet1')#添加sheet
    sheet.write(0,0,"学生姓名")#行,列,内容
    sheet.write(1,0,"蔡明超")
    sheet.write(2,0,"吴亦凡")
    sheet.write(3,0,"汪峰")
    book.save("明星.xls")#如果是wps的话,可以使用xlsx
    

      写表结果:

      写表练习:

      1、将学生成绩信息,使用如图格式写入一个表格中

      {
    "1":["小花",99,100,98.5],
    "2":["小王",90,30.5,95],
    "3":["小明",67.5,49.6,88]          
    }

    import xlwt
    book = xlwt.Workbook()
    sheet = book.add_sheet("学生成绩")
    title = ['学号','姓名','语文成绩','数学成绩','英语成绩','总分','平均分']
    
    #优化前:
    # data = {
    # 	"1":["小花",99,100,98.5],
    # 	"2":["小王",90,30.5,95],
    # 	"3":["小明",67.5,49.6,88]
    # }
    # #处理表头
    # for col,t in enumerate(title):
    #     sheet.write(0,col,t)
    # row = 1
    # for k,v in data.items():
    #     v.insert(0,k)#插入编号,将字典类型转换为list
    #     sum_score = sum(v[2:])#计算总分
    #     avg = round(sum_score/3,2)#计算平均分,并保留两位小数
    #     v.append(sum_score)
    #     v.append(avg)
    #     col = 0
    #     for value in v:
    #         sheet.write(row,col,value)
    #         col+=1
    #     row +=1
    # book.save('学生成绩表.xls')
    
    #优化后:
    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): #行,row为从1开始的索引,默认枚举型从0开始
        sum_score = sum(v[2:])#算总分
        avg_score = round(sum_score / 3,2) #算平均分,round取两位小数
        v.append(sum_score)
        v.append(avg_score)
        for col,value in enumerate(v):
            sheet.write(row,col,value)
    
    book.save("students.xls")  #如果你用的是wps的话,可使用xlsx
    

      

    二、读Excel

      将student.xls表格中的数据读出来

      

    import xlrd
    book = xlrd.open_workbook('students.xls')#打开表格
    sheet = book.sheet_by_index(0)#打开sheet
    # sheet = book.sheet_by_name("学生成绩")
    print(sheet.cell(0,0).value)#指定单元格内容
    print(sheet.row_values(1))#取索引值为1的整行数据
    print(sheet.col_values(1))#取索引值为1的整列数据
    print(sheet.nrows)#总行数
    print(sheet.ncols)#总列数
    

     返回结果:

    id
    ['1', '小花', 99.0, 100.0, 98.5, 297.5, 99.17]
    ['name', '小花', '小王', '小明']
    4
    7
    

      

    三、修改Excel

    from xlutils import copy
    import xlrd
    import os
    
    book = xlrd.open_workbook('students.xls')#打开表格
    new_book = copy.copy(book)#拷贝表格
    sheet = new_book.get_sheet(0)
    sheet.write(0,0,"id")#将0行0列单元格修改为id
    sheet.write(0,1,"name")
    os.rename('students.xls','students_bak.xls')#为防止表格被覆盖无法复原,先备份表格
    new_book.save('students.xls')
    

      

  • 相关阅读:
    CGAffineTransform的使用大概:
    CYLTabBarController的简单使用
    Masonry详解
    Swift学习 (四)
    《Advanced Bash-scripting Guide》学习(二):测试脚本调用的参数是否正确
    《Advanced Bash-scripting Guide》学习(一):对一个增强和广义的删除logfile的脚本的理解
    [JSOI2007]字符加密Cipher
    codevs 3160 最长公共子串
    codevs 1500 后缀排序
    浅谈后缀数组
  • 原文地址:https://www.cnblogs.com/bugoobird/p/12958103.html
Copyright © 2011-2022 走看看