报表工具访问 zip

需求

如何读取应用内 存放在压缩包文件(zip)中的数据文件生成报表?

已知报表目录下有“订单相关数据文件.zip”

订单相关数据文件.zip

里面包含多个数据表,如下

imagepng

读取其中的“订单.xls”和“订单明细.xls”,数据情况

imagepng

imagepng

想要生成报表结果(除几个订单基本信息外,增加”订单总额”)

imagepng

方案分析

如果数据表在关系数据库,写个两表的关联 SQL 很容易解决。但现在是 zip 文件内,目前还没见过报表工具可以支持直接读取该类文件内数据作为数据源的, 能想到的解决办法也只能是通过程序类数据集,写代码完成了,缺点明显:代码量都很多(包括解压 zip、读取 xls 数据文件、关联汇总、格式转换等),需要具备编程能力,有一定的技术门槛,且不通用。

针对该问题,采用润乾报表的脚本数据集已经很容易解决,封装了对 zip 操作的外部库函数,借助脚本的数据处理能力,还可以轻松解决读取 Excel 文件及多表关联,接下来就看看怎么做?

具体实现

1、 打开润乾报表工具,引入 ZipCli 外部库

外部库的下载和使用指南,可到http://c.raqsoft.com.cn/tag/Download 查找。
勾选“ZipCli”选项
imagepng

2、 新增空白报表并新增脚本数据集

imagepng

3、 编写脚本

A B
1 =zip_open(“订单相关数据文件.zip”) / 打开 zip 文件
2 =zip_extract(A1,“订单 *.xls”) / 抽取 Excel 文件到 zip 文件目录
3 =file(“订单.xls”).importxls@t() / 读取“订单.xls”
4 =file(“订单明细.xls”).importxls@t() / 读取“订单明细.xls”
5 =A4.groups(订单 ID;sum( 数量 * 单价): 订单总额 ) / 根据订单 ID 汇总
6 =A3.join(订单 ID,A5, 订单总额) / 为订单表增加“订单金额”
7 >zip_close(A1) / 关闭 zip 文件
8 result A6

4、 绘制报表呈现数据

imagepng

预览报表结果

imagepng