- Python辅助Word+Excel:让办公更高效
- 罗帅 罗斌编著
- 438字
- 2023-09-26 17:12:58
027 使用集合方法筛选两个工作表
此案例主要通过使用Python语言的集合的difference()方法获取两个集合的差集,从而实现在两个工作表中筛选不同的行。当运行此案例的Python代码(A345.py文件)之后,将根据“订单表.xlsx”文件的全部订单表和已出库订单表创建未出库订单表,全部订单表如图027-1所示,已出库订单表如图027-2所示,创建的未出库订单表如图027-3所示。
图027-1
图027-2
A345.py文件的Python代码如下:
import openpyxl myBook=openpyxl.load_workbook('订单表.xlsx',data_only=True) mySheet1=myBook['全部订单表'] mySheet2=myBook['已出库订单表'] #将全部订单表(mySheet1)复制成未出库订单表(mySheet3) mySheet3=myBook.copy_worksheet(mySheet1) mySheet3.title='未出库订单表' #删除未出库订单表(mySheet3)的行(第1行除外) while mySheet3.max_row >1: mySheet3.delete_rows(2) myList1=list(mySheet1.values)[1:] myList2=list(mySheet2.values)[1:] #根据全部订单表的行(第1行除外)创建集合(mySet1) mySet1=set(myList1) #根据已出库订单表的行(第1行除外)创建集合(mySet2) mySet2=set(myList2) #计算mySet1和mySet2两个集合的差集,即获得未出库订单表的行 mySet3=mySet1.difference(mySet2) #循环集合(mySet3)的行(myRow)数据 for myRow in mySet3: #将行(myRow)数据添加到未出库订单表(mySheet3)中 mySheet3.append(myRow) myBook.save('结果表-订单表.xlsx')
图027-3
在上面这段代码中,mySet3=mySet1.difference(mySet2)表示mySet1和mySet2两个集合的差集(即mySet1-mySet2=mySet3)。一般情况下,mySet1代表全集,mySet2代表子集。因此在此案例中,如果设置mySet3=mySet2.difference(mySet1),则mySet3将是一个空集。
此案例的源文件是MyCode\A345\A345.py。