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才可以
    

      

  • 相关阅读:
    基于Woodstox的StAX 2 (Streaming API for XML)解析XML
    JAVA技术路线图
    richface的配置、用法介绍和注意事项
    POS与EPOS区别
    CSDN:你认为一名优秀的技术人应该具备怎样的素质?
    阶段一-03.地址,订单,支付,定时任务开发-第1章 收货地址功能开发-1-5 收货地址
    阶段一-03.地址,订单,支付,定时任务开发-第1章 收货地址功能开发-1-4 收货地址
    阶段一-03.地址,订单,支付,定时任务开发-第1章 收货地址功能开发-1-3 收货地址
    阶段一-03.地址,订单,支付,定时任务开发-第1章 收货地址功能开发-1-2 收货地址
    阶段一-03.地址,订单,支付,定时任务开发-第1章 收货地址功能开发-1-1 收货地址
  • 原文地址:https://www.cnblogs.com/MLing/p/12966438.html
Copyright © 2011-2022 走看看