如何根据参数选择 Excel 并筛选数据后生成报表
需求说明
有某超市 2020 年各月产品采购明细数据,按月存放在“HDatas”的 Excel 文件,如下
数据格式如下
报表要求: 输入开始及结束日期两个参数(不跨月)后,找到对应的 Excel 文件并查询出开始日期 17 点到结束日期 17 点之间的记录。如上图所示,传入”2020-06-02”及”2020-06-06”,要查询出对应月份 Excel 文件内圈住的数据生成报表。
下载安装润乾报表
下载地址:http://www.raqsoft.com.cn/wx/download-for-businesspeople.html
下载润乾报表职场版,按照向导安装就可以了。首次启动软件时需要选择授权文件,事先下载一个免费授权就足够了。
报表制作过程
1、 打开润乾报表工具并新建空白报表
2、 增加数据集,数据集类型选择“脚本数据集”。另外,数据集名称可自定义,就用缺省的 ds1 即可。
3、 编辑脚本
A | B | |
---|---|---|
1 | >bDate=bDate+"17:00:00" | >eDate=eDate+"17:00:00" |
2 | =file(“HDatas/”/left(bDate,7)/“.xlsx”).xlsimport@t().select(采购时间 >bDate && 采购时间 <eDate) | |
3 | return A2 |
A1、B1:给日期拼上时间部分。
A2:根据查询日期值的前 7 位(2020-06-02,加粗部分)找对应的 Excel 文件,读入并筛选出符合条件的记录,其中 xlsimport 的选项 @t 表示 Excel 文件的第 1 行是列标题
4、 绘制报表,包括报表参数、样式、报表单元格的表达式等
增加两个报表参数,参数名称分别为“bDate”和“eDate”
报表格式和 Excel 类似画就可以
单元格的表达式部分如下:
A2:=ds1.select(商品编号)
B2:=ds1. 商品名称
C2:=ds1. 采购时间
D2:=ds1. 采购数量
E2:=ds1. 单位数量
5、 保存报表并预览结果
输入查询日期
报表结果
6、 导出报表结果到 Excel 文件
稍复杂情况
上面的例子,如果出现跨月份查询就不行了,也就是可能需要从多个 Excel 文件拿数据,如何能同时支持这种情况呢?
修改第 3 步的脚本:
A | B | |
---|---|---|
1 | >bDate=bDate/"17:00:00" | >eDate=eDate/"17:00:00" |
2 | [] | |
3 | for month(bDate),month(eDate) | >A2=A2|file(“HDatas/2020-”/string(A3,“00”)/“.xlsx”).xlsimport@t().select(采购时间 >bDate&& 采购时间 <eDate) |
4 | return A2 |
思路:开始月到结束月遍历,筛选各文件数据后合并。
A3:取开始月份和结束月份,for 循环
B3:根据月份,动态找到对应的 Excel 文件,并按条件筛选数据,将结果合并到 A2
其他步骤不用改动,替换脚本可直接预览导出,支持时间段跨月和不跨月筛选。