Excel操作
一、读取excel中的内容
students.xml里的内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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内容
1 2 3 4 5 6 7 8 9 10 | 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(枚举) 对象。
例子一:
1 2 3 4 5 6 7 8 | number = [ 'a' , 'b' , 'c' , 'd' ] for index,i in enumerate (number, 1 ): print (index,i) 运行结果: 1 a 2 b 3 c 4 d |
例子二:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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有关的练习
方法一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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自动加序列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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才可以 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)