如何根据参数选择 Excel 并筛选数据后生成报表

需求说明

有某超市 2020 年各月产品采购明细数据,按月存放在“HDatas”的 Excel 文件,如下

imagepng

数据格式如下

imagepng

报表要求: 输入开始及结束日期两个参数(不跨月)后,找到对应的 Excel 文件并查询出开始日期 17 点到结束日期 17 点之间的记录。如上图所示,传入”2020-06-02”及”2020-06-06”,要查询出对应月份 Excel 文件内圈住的数据生成报表。

imagepng

下载安装润乾报表

下载地址:http://www.raqsoft.com.cn/wx/download-for-businesspeople.html

下载润乾报表职场版,按照向导安装就可以了。首次启动软件时需要选择授权文件,事先下载一个免费授权就足够了。

报表制作过程

1、 打开润乾报表工具并新建空白报表

imagepng

2、 增加数据集,数据集类型选择“脚本数据集”。另外,数据集名称可自定义,就用缺省的 ds1 即可。

imagepng

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”

imagepng

报表格式和 Excel 类似画就可以

imagepng

单元格的表达式部分如下:

A2:=ds1.select(商品编号)

B2:=ds1. 商品名称

C2:=ds1. 采购时间

D2:=ds1. 采购数量

E2:=ds1. 单位数量

5、 保存报表并预览结果

imagepng

输入查询日期

imagepng

报表结果

imagepng

6、 导出报表结果到 Excel 文件

imagepng

imagepng

稍复杂情况

上面的例子,如果出现跨月份查询就不行了,也就是可能需要从多个 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

其他步骤不用改动,替换脚本可直接预览导出,支持时间段跨月和不跨月筛选。