数据查询

所谓数据查询,是用一个或多个关键字,查找出对应的数据。本节介绍单个关键字的个案查询和多个关键字的多条件查询。[大谦Excel,dqexcel点com]

个案查询

对于图6-6中处理前工作表中左侧的数据,给定右侧商品名称作为查询关键字,查找出该商品对应的销售数量和金额。思路是利用工作表数据,构造一个字典。将商品名称作为字典中键值对的键,将销售数量和金额组成的列表作为键值对的值。然后利用该字典和给定的商品名称,即可得到对应的销售数据。

code.python
1	import xlwings as xw
2	import os
3	root = os.getcwd()
4	app = xw.App(visible=True, add_book=False)
5	wb=app.books.open(root+r"/销售流水-个案查询.xlsx",read_only=False)
6	sht=wb.sheets.active
7	arr=sht.range("A2",sht.cells(sht.cells(1,"B").end("down").row,"C")).value
8	dicT={}
9	for i in range(len(arr)):  #遍历每行数据
10	    dicT[arr[i][0]]=[arr[i][1],arr[i][2]]  #将名称作键,销售数据作值
11	for i in range(2,sht.cells(1,"F").end("down").row+1):  #根据给定名称查询值
12	    sht.cells(i,"G").value=dicT[sht.cells(i,"F").value]

第1-5行的说明同6.1.1小节的代码说明。

第6-7行获取活动工作表,用range属性获取数据到二维列表arr。

第8行创建空字典dicT。

第9-10行用一个for循环往字典dicT中添加键值对。将商品名称作为键值对的键,将销售数量和金额组成的列表作为键值对的值。

第11-12行使用一个for循环,根据F列给定的商品名称,将对应的销售数据,即该商品名称对应的字典的值逐个输出到G列和H列。

在Python IDLE文件脚本窗口,在"Run"菜单中单击"Run Module"选项,个案查询结果如图6-6中处理后工作表中所示。

Document Image

图6-6 个案查询

多条件查询

多条件查询有两个及两个以上的查询关键字。思路是将这两个或多个关键字作为字符串进行连接,组成一个字符串作为字典中键值对的键,对应的数据作为键值对的值,这样就将多条件查询问题转换为个案查询问题。

对于图6-7中处理前工作表中左侧的数据,给定右侧销售人员和商品名称作为查询关键字,查找出该商品对应的销售数量和金额。

code.python
1	import xlwings as xw
2	import os
3	root = os.getcwd()
4	app = xw.App(visible=True, add_book=False)
5	wb=app.books.open(root+r"/销售情况-多条件查询.xlsx",read_only=False)
6	sht=wb.sheets.active
7	arr=sht.range("A2",sht.cells(sht.cells(1,"A").end("down").row,"D")).value
8	dicT={}
9	for i in range(len(arr)):  #遍历每行数据
10	    dicT[str(arr[i][0])+str(arr[i][1])]=[arr[i][2],arr[i][3]]  #多条件组合成键
11	for i in range(2,sht.cells(1,"F").end("down").row+1):  #根据给定的多条件查询
12	    sht.cells(i,"H").value=dicT[str(sht.cells(i,"F").value)+\
str(sht.cells(i,"G").value)]  #写入查询到的值,即销售数据

第1-5行的说明同6.1.1小节的代码说明。

第6-7行获取活动工作表,用range属性获取数据到二维列表arr。

第8行创建空字典dicT。

第9-10行用一个for循环往字典dicT中添加键值对。将销售人员和商品名称拼接成的新字符串作为键值对的键,将销售数量和金额组成的列表作为键值对的值。

第11-12行使用一个for循环,根据F列给定的销售人员名称和G列给定的商品名称,将对应的销售数据,即销售人员和商品名称组成的键对应的字典的值逐个输出到H列和I列。

在Python IDLE文件脚本窗口,在"Run"菜单中单击"Run Module"选项,多条件查询结果如图6-7中处理后工作表中所示。

Document Image

图6-7 多条件查询