一、读取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])
返回 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才可以
原文:https://www.cnblogs.com/MLing/p/12966438.html