赞
踩
- # 导入openpyxl模块
- import openpyxl
- # 根据“录取表.xlsx”文件内容,并打开工作簿
- mybook = openpyxl.load_workbook("录取表.xlsx", data_only=True)
- mysheet = mybook['录取表']
- # 按行获取录取表(mysheet)的单元格数据(myrange)
- myrange=list(mysheet.values)
- #根据录取表(mysheet)创建(复制)新录取表(mynewsheet)
- mynewsheet = mybook.copy_worksheet(mysheet)
- mynewsheet.title = '新录取表'
- #删除新录取表(mynewsheet)第3行之后的行(即删除所有考生)
- while mynewsheet.max_row>3:
- mynewsheet.delete_rows(4)
- #从myrange第四行开始先根据总分列对行进行升序排序然后在循环,
- for myrow in sorted(myrange[3:],key=lambda x:x[3],reverse=True):
- #在新录取表(mynewsheet)中添加经过降序排列后的考生
- mynewsheet.append(myrow)
- # 保存工作簿,保存为"结果表-录取表.xlsx"文件
- mybook.save("结果表-录取表.xlsx")
sorted(myrange[3:],key=lambda x:x[3],reverse=True)
表示对指定范围(myrange[3:])的所有行(从第四行开始)根据第四列(总分列)的数据进行降序排列,reverse=True表示降序,False表示升序,但默认升序
- # 导入openpyxl模块
- import openpyxl
- # 根据“新书订购表.xlsx”文件内容,并打开工作簿
- mybook = openpyxl.load_workbook("新书订购表.xlsx", data_only=True)
- mysheet = mybook['新书订购表']
- # 按行获取新书订购表(mysheet)的单元格数据(第一行除外)
- myrows=list(mysheet.values)[1:]
- mylist=[]
- for myrow in myrows:
- mylist+=[myrow[0]]
- #根据书名的长度进行倒序排列
- mylist.sort(key=len,reverse=True)
- #mylist.sort(key=lambda x:len(x),reverse=True)
- #在新书订购表(mysheet)中删除所有的行(第一行除外)
- while mysheet.max_row>1:
- mysheet.delete_rows(2)
- #在新书订购表(mysheet)中添加倒序排列的书名
- for myrow in mylist:
- mysheet.append([myrow])
- # 保存工作簿,保存为"结果表-新书订购表.xlsx"文件
- mybook.save("结果表-新书订购表.xlsx")
mylist.sort(key=len,reverse=True)
表示根据 mylist 列表成员的字符串长度进行倒序排列
- # 导入openpyxl模块
- import openpyxl
- # 根据“员工表.xlsx”文件内容,并打开工作簿
- mybook = openpyxl.load_workbook("员工表.xlsx",data_only=True)
- mysheet = mybook.active
- # 按行获取员工表(mysheet)的单元格数据(第一行除外)
- myvalues=list(mysheet.values)[1:]
- #根据myvalues创建myset集合,此时自动随机排列所有行
- myset=set(myvalues)
- #删除员工表(mysheet)的行(第一行除外)
- while mysheet.max_row>1:
- mysheet.delete_rows(2)
- #在员工表(mysheet)中添加经过随机排列的行(myset)
- for myrow in myset:
- mysheet.append([myrow)
- # 保存工作簿,保存为"结果表-员工表.xlsx"文件
- mybook.save("结果表-员工表.xlsx")
myset=set(myvalues)
表示根据员工表的所有行创建集合,在python中,集合是无序的、且不重复元素(成员),因此每次运行此代码时,在myset的成员的排列顺序均不相同
- # 导入openpyxl模块
- import openpyxl
- # 根据“员工表.xlsx”文件内容,并打开工作簿
- mybook = openpyxl.load_workbook("员工表.xlsx",data_only=True)
- mysheet = mybook.active
- # 按行获取员工表(mysheet)的单元格数据(第一行除外)
- myrows=list(mysheet.values)[1:]
- #删除员工表(mysheet)的行(第一行除外)
- while mysheet.max_row>1:
- mysheet.delete_rows(2)
- #从myrows的第一行开始,根据间隔行数(1行)正序筛选所有行
- for myrow in myrows[::2]:
- mysheet.append(myrow)
- # 保存工作簿,保存为"结果表-员工表.xlsx"文件
- mybook.save("结果表-员工表.xlsx")
myrows[::2]
表示从myrows的第一行开始,根据间隔行数(1行)正序筛选所有行。如果 myrows[::1] 则没有筛选效果。如果 myrows[::3] 表示从myrows的第一行开始,根据间隔行数(2行)正序筛选所有行
- # 导入openpyxl模块
- import openpyxl
- # 根据“员工表.xlsx”文件内容,并打开工作簿
- mybook = openpyxl.load_workbook("员工表.xlsx",data_only=True)
- mysheet = mybook.active
- # 按行获取员工表(mysheet)的单元格数据(第一行除外)
- myrows=list(mysheet.values)[1:]
- #删除员工表(mysheet)的行(第一行除外)
- while mysheet.max_row>1:
- mysheet.delete_rows(2)
- #从myrows的第一行开始,根据间隔行数(1行)正序筛选所有行
- for myrow in myrows[::-2]:
- mysheet.append(myrow)
- # 保存工作簿,保存为"结果表-员工表.xlsx"文件
- mybook.save("结果表-员工表.xlsx")
myrows[::-2]
表示在myrows中从倒数第一行开始,根据间隔行数(1行)倒序筛选所有行。
如果 myrows[::-1] 仅有倒序排列结果,没有筛选效果
如果 myrows[::-3] 表示在myrows中从倒数第一行开始,根据间隔行数(2行)倒序筛选所有行
- # 导入openpyxl模块
- import openpyxl
- # 根据“新书表.xlsx”文件内容,并打开工作簿
- mybook = openpyxl.load_workbook("新书表.xlsx",data_only=True)
- mysheet = mybook.active
- # 按行获取员工表(mysheet)的单元格数据(第一行除外)
- myrows=list(mysheet.values)[1:]
- mydict={}
- for myrow in myrows:
- #根据每行(myrow)的书名(myrow[0])和售价(myrow[1])创建字典
- mydict[myrow[0]]=myrow[1]
- #获取在字典(mydict)中售价(mydict.values())最高的图书
- mymax=max(zip(mydict.values(),mydict.keys()))
- mysheet.append(['【最高售价图书】'+mymax[1],mymax[0]])
- # 保存工作簿,保存为"结果表-新书表.xlsx"文件
- mybook.save("结果表-新书表.xlsx")
zip(mydict.values(),mydict.keys())
mydict.values() 表示 mydict 的所有键值,mydict.keys() 表示字典的所有键名,zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成元组,然后返回由这些元组组成的列表
max() 函数用于获取给定参数的最大值,参数可以是序列
- # 导入openpyxl模块
- import openpyxl
-
- # 根据“员工表.xlsx”文件内容,并打开工作簿
- mybook = openpyxl.load_workbook("员工表.xlsx", data_only=True)
- mysheet = mybook.active
- # 由于每执行一次mysheet.delete_rows(myrow),
- # mysheet.max_row会发生变化,因此采用倒循环
- # mysheet.max_row表示起始行号,1表示结束行号,-1表示步长
- for myrow in range(mysheet.max_row, 1, -1):
- if '江北县' not in mysheet[myrow][2].value:
- mysheet.delete_rows(myrow)
- # 保存工作簿,保存为"结果表-员工表.xlsx"文件
- mybook.save("结果表-员工表.xlsx")
- # 导入openpyxl模块
- import openpyxl
-
- # 根据“销量排行表.xlsx”文件内容,并打开工作簿
- mybook = openpyxl.load_workbook("销量排行表.xlsx", data_only=True)
- mysheet = mybook.active
- # 按行获取销量排行表(mysheet)的单元格数据(第一行除外)
- myrows=list(mysheet.values)[1:]
- #在销量排行表(mysheet)中删除所有行(第一行除外)
- while mysheet.max_row>1:
- mysheet.delete_rows(2)
- mylist=['清华出版社','北京出版社']
- for myrow in myrows:
- #根据出版社名字(myrow[3])在mylist中
- if myrow[3] in mylist:
- mysheet.append(myrow)
- # 保存工作簿,保存为"结果表-销量排行表.xlsx"文件
- mybook.save("结果表-销量排行表.xlsx")
- # 导入openpyxl模块
- import openpyxl
- # 根据“销量排行表.xlsx”文件内容,并打开工作簿
- mybook = openpyxl.load_workbook("销量排行表.xlsx", data_only=True)
- mysheet = mybook.active
- # 按行获取销量排行表(mysheet)的单元格数据(第一行除外)
- myrows=list(mysheet.values)[1:]
- #在销量排行表(mysheet)中删除所有行(第一行除外)
- while mysheet.max_row>1:
- mysheet.delete_rows(2)
- mylist=['清华出版社','北京出版社']
- for myrow in myrows:
- if myrow[2]>100 or '清华大学出版社' in myrow[3]:
- mysheet.append(myrow)
- # 保存工作簿,保存为"结果表-销量排行表.xlsx"文件
- mybook.save("结果表-销量排行表.xlsx")
- # 导入openpyxl模块
- import openpyxl
- # 根据“销量排行表.xlsx”文件内容,并打开工作簿
- mybook = openpyxl.load_workbook("销量排行表.xlsx", data_only=True)
- mysheet = mybook.active
- # 按行获取销量排行表(mysheet)的单元格数据(第一行除外)
- myrows = list(mysheet.values)[1:]
- # 在销量排行表(mysheet)中删除所有行(第一行除外)
- while mysheet.max_row > 1:
- mysheet.delete_rows(2)
- for myrow in myrows:
- if myrow[2] > 100 and '清华大学出版社' in myrow[3]:
- mysheet.append(myrow)
- # 保存工作簿,保存为"结果表-销量排行表.xlsx"文件
- mybook.save("结果表-销量排行表.xlsx")
- # 导入openpyxl模块
- import openpyxl
- # 根据“员工表.xlsx”文件内容,并打开工作簿
- mybook = openpyxl.load_workbook("员工表.xlsx", data_only=True)
- mysheet = mybook.active
- # 根据员工表(mysheet)的单元格数据(第一行除外)创建集合(myset)
- myset = set(list(mysheet.values)[1:])
- # 在员工表(mysheet)中删除所有行(第一行除外)
- while mysheet.max_row > 1:
- mysheet.delete_rows(2)
- #在员工表(mysheet)中随机筛选6行数据
- for myrow in range(6):
- mysheet.append(myset.pop())
- # 保存工作簿,保存为"结果表-员工表.xlsx"文件
- mybook.save("结果表-员工表.xlsx")
myset.pop()
表示从 myset 集合中随机随机移除一个成员(移除是随机的)
- # 导入openpyxl模块
- import openpyxl
- # 根据“运动员表.xlsx”文件内容,并打开工作簿
- mybook = openpyxl.load_workbook("运动员表.xlsx", data_only=True)
- mysheet1 = mybook['篮球赛']
- mysheet2 = mybook['足球赛']
- mysheet3 = mybook['乒乓球赛']
- # 根据篮球赛工作表(mysheet1)的行(第一行除外)创建集合(myset1)
- myset1 = set(list(mysheet1.values)[1:])
- # 根据足球赛工作表(mysheet2)的行(第一行除外)创建集合(myset2)
- myset2 = set(list(mysheet2.values)[1:])
- # 根据篮球赛工作表(mysheet3)的行(第一行除外)创建集合(myset3)
- myset3 = set(list(mysheet3.values)[1:])
- # 获取三个集合的交集(myset4),即筛选参加三种比赛的运动员
- myset4 = myset1.intersection(myset2, myset3)
- # 根据交集(myset4)创建参加三种比赛的工作表(mysheet4)
- mysheet4 = mybook.copy_worksheet(mysheet1)
- mysheet4.title = '三种比赛'
- while mysheet4.max_row > 1:
- mysheet4.delete_rows(2)
- for myrow in myset4:
- mysheet4.append(myrow)
- # 保存工作簿,保存为"结果表-运动员表.xlsx"文件
- mybook.save("结果表-运动员表.xlsx")
myset1.intersection(myset2, myset3)
表示myset1、myset2、myset3三个集合的交集myset4。
可以在 intersection() 方法中添加多个参数,以实现获取多个集合的交集
- # 导入openpyxl模块
- import openpyxl
- # 根据“城市排名表.xlsx”文件内容,并打开工作簿
- mybook = openpyxl.load_workbook("城市排名表.xlsx", data_only=True)
- mysheet = mybook.active
- # 按行获取城市排名表(mysheet)的单元格数据(第一行除外)
- myrows = list(mysheet.values)[1:]
- #使用集合推导式在myrows中筛选包含‘广州’的行
- myset={myrow for myrow in myrows if '广州' in myrow[1]}
- #在城市排名表(mysheet)中删除所有行(第一行除外)
- while mysheet.max_row > 1:
- mysheet.delete_rows(2)
- #将筛选结果(myset)重新写入城市排名表(mysheet)
- for myrow in myset:
- mysheet.append(myrow)
- # 保存工作簿,保存为"结果表-城市排名表.xlsx"文件
- mybook.save("结果表-城市排名表.xlsx")
myset={myrow for myrow in myrows if '广州' in myrow[1]}
表示循环列表(myrows)的每一行(myrow),如果该行( myrow )的城市列( myrow[1] )包含'广州',则将该行添加到新建的集合中
- # 导入openpyxl模块
- import openpyxl
- # 根据“五百强企业表.xlsx”文件内容,并打开工作簿
- mybook = openpyxl.load_workbook("五百强企业表.xlsx", data_only=True)
- mysheet = mybook['五百强企业表']
- # 按行获取五百强企业表(mysheet)的单元格数据(第一行除外)
- myrows = list(mysheet.values)[1:]
- #创建空集合(myset)
- myset=set()
- #循环五百强企业表(mysheet)的行(myrow)
- for myrow in myrows:
- #循环行(myrow)的公司名称(第一列单元格除外)
- for myname in myrow[1:]:
- #在集合myset中添加所有的公司名称(自动删除重复的公司)
- myset.add(myname)
- #在工作簿(mybook)中创建新工作表
- mynewsheet=mybook.create_sheet('所有公司表')
- #将筛选结果(myset)重新写入城市排名表(mysheet)
- for myname in myset:
- #在新工作表(mynewsheet)中添加不重复的公司名称(myname)
- mynewsheet.append([myname])
- # 保存工作簿,保存为"结果表-五百强企业表.xlsx"文件
- mybook.save("结果表-五百强企业表.xlsx")
myset.add(myname)
表示在myset集合中添加公司名称(myname),若在五百强公司企业表中存在相同的公司名称,则在myset中只保留一个
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。