"有打赏。想请教一下大家,我想把 rpx 和 raq 的报表文件中的逻辑导出为 txt,而不是通过报表设计器打开查看,请问可以实现吗,有没有案例可以给参考一下呢 。 提供案例或协助解答问题,提供 .."
有打赏。想请教一下大家,我想把 rpx 和 raq 的报表文件中的逻辑导出为 txt,而不是通过报表设计器打开查看,请问可以实现吗,有没有案例可以给参考一下呢。提供案例或协助解答问题,提供积分报答。第一次用这个,不太懂积分的价值,也可用微信转账 50 元代替
求助一下大佬给看看这个问题,想导出为 txt 后,批量处理加工逻辑
我的描述错了,想导出报表数据集中 sql 检索的语法逻辑,以及集算器文件整体
参考下下边例子,获取到数据集 sql 后是写到 txt 还是其他地方自己处理下就行,rpx 是新版,raq 是原来的 V4 系列,代码基本都一样,就是 import 类时不同,带 report4 的是 V4 的,这个注意下就行ExtCellSet.readLicense(“授权 xml 文件”); // 设置润乾报表授权文件
ReportDefine rd=(ReportDefine) ReportUtils.read(“F:/test0104.rpx”);// 读取报表文件
DataSetMetaData dm=rd.getDataSetMetaData();// 数据集元数据类
int dmcount=dm.getDataSetConfigCount();// 获取数据集个数
for(int i=0;i<dmcount;i++) {// 按照个数循环,注意是从 0 开始,也就是第一个数据集在程序中循环时是 0
SQLDataSetConfig sds= (SQLDataSetConfig)dm.getDataSetConfig(i);// 获取数据集,并转成 SQLDataSetConfig
String sql=sds.getSQL();// 获取数据集中 sql
System.out.println(sql);// 这里输出,具体是写到 txt 还是其他地方,自己处理下就行
}
好的多谢,我没法给你私信,请私信发我微信号,转账
集算器文件整体这个没太明白啥意思,是数据集用的集算器文件,然后要获取到这个集算器文件名?集算器文件名应该是可以通过 api 获取,但是里边具体脚本目前还没有 api 能获取到,这个获取到有实际需求吗?
哈哈,互相学习,答谢就不需要了,合作愉快。然后代码补充下,如果需要批量操作,那将多个报表放到一个目录里,按照目录循环获取里边的文件名,再写个 for 就行,这个主要是 java 的标准写法了,主要是对 File 的操作。然后获取 sql 后如果想更改 sql 再写回报表去,其实代码和上边发的都一样,就是在获取 sql 那改个 sds.setSQL(“new sql”); ,这样就是设置新的 sql 了。润乾的程序员参考手册里也有一些接口说明,有时间也可以看下 http://d.raqsoft.com.cn:6999/report/preference/dsjjysjl23.html如果有具体代码不知道怎么写,论坛上回复下就行
好的多谢大佬,我理解了
集算器文件整体,就是想把所有单元格的内容,都导出到 txt 里
就是想批量取出集算器里面的 sql 逻辑,做一些数据来源表和字段的分析处理。
如果报表用的脚本数据集的话,这个倒是有方法获取到脚本内容,但是获取到的应该是个字符串组或者是一个整个的字符串,这个要分析里边内容可能有点难度。如果是集算器文件的话,api 这块还说不太好,可能需要处理的就多了,还需要尝试下看看。不过集算器脚本也好,集算器文件也好,这些主要是取数后在脚本里对数据做加工处理,重点在后边这些逻辑过程运算,即使真拿到所有脚本存出来,貌似看起来也很难受,远不如直接在集算器工具里看,在集算器里不止能看到具体脚本内容,还能做具体的调试,能看到每步的中间结果,这个更有实际意义如果是脚本数据集,那获取脚本数据集对应的方法是:SimpleEsProcDataSetConfig sds= (SimpleEsProcDataSetConfig)dm.getDataSetConfig(i);// 获取数据集
//System.out.println(sds.getScript());
String[][] array=(String[][]) sds.getScript();
for(int m=0;m<5;m++) {
for(int n=0;n<5;n++) {
System.out.println(array[m][n]);
}获取到的结果是个二维数组,然后循环取就行,对应的就是脚本数据集内每个格子的内容,这里做了个测试是 5 行 5 列的,实际应该用 length 去获取长度再循环
求助一下大佬给看看这个问题,想导出为 txt 后,批量处理加工逻辑
我的描述错了,想导出报表数据集中 sql 检索的语法逻辑,以及集算器文件整体
参考下下边例子,获取到数据集 sql 后是写到 txt 还是其他地方自己处理下就行,rpx 是新版,raq 是原来的 V4 系列,代码基本都一样,就是 import 类时不同,带 report4 的是 V4 的,这个注意下就行
ExtCellSet.readLicense(“授权 xml 文件”); // 设置润乾报表授权文件
ReportDefine rd=(ReportDefine) ReportUtils.read(“F:/test0104.rpx”);// 读取报表文件
DataSetMetaData dm=rd.getDataSetMetaData();// 数据集元数据类
int dmcount=dm.getDataSetConfigCount();// 获取数据集个数
for(int i=0;i<dmcount;i++) {// 按照个数循环,注意是从 0 开始,也就是第一个数据集在程序中循环时是 0
SQLDataSetConfig sds= (SQLDataSetConfig)dm.getDataSetConfig(i);// 获取数据集,并转成 SQLDataSetConfig
String sql=sds.getSQL();// 获取数据集中 sql
System.out.println(sql);// 这里输出,具体是写到 txt 还是其他地方,自己处理下就行
}
好的多谢,我没法给你私信,请私信发我微信号,转账
集算器文件整体这个没太明白啥意思,是数据集用的集算器文件,然后要获取到这个集算器文件名?
集算器文件名应该是可以通过 api 获取,但是里边具体脚本目前还没有 api 能获取到,这个获取到有实际需求吗?
哈哈,互相学习,答谢就不需要了,合作愉快。
然后代码补充下,如果需要批量操作,那将多个报表放到一个目录里,按照目录循环获取里边的文件名,再写个 for 就行,这个主要是 java 的标准写法了,主要是对 File 的操作。
然后获取 sql 后如果想更改 sql 再写回报表去,其实代码和上边发的都一样,就是在获取 sql 那改个 sds.setSQL(“new sql”); ,这样就是设置新的 sql 了。
润乾的程序员参考手册里也有一些接口说明,有时间也可以看下 http://d.raqsoft.com.cn:6999/report/preference/dsjjysjl23.html
如果有具体代码不知道怎么写,论坛上回复下就行
好的多谢大佬,我理解了
集算器文件整体,就是想把所有单元格的内容,都导出到 txt 里
就是想批量取出集算器里面的 sql 逻辑,做一些数据来源表和字段的分析处理。
如果报表用的脚本数据集的话,这个倒是有方法获取到脚本内容,但是获取到的应该是个字符串组或者是一个整个的字符串,这个要分析里边内容可能有点难度。
如果是集算器文件的话,api 这块还说不太好,可能需要处理的就多了,还需要尝试下看看。
不过集算器脚本也好,集算器文件也好,这些主要是取数后在脚本里对数据做加工处理,重点在后边这些逻辑过程运算,即使真拿到所有脚本存出来,貌似看起来也很难受,远不如直接在集算器工具里看,在集算器里不止能看到具体脚本内容,还能做具体的调试,能看到每步的中间结果,这个更有实际意义
如果是脚本数据集,那获取脚本数据集对应的方法是:
SimpleEsProcDataSetConfig sds= (SimpleEsProcDataSetConfig)dm.getDataSetConfig(i);// 获取数据集
//System.out.println(sds.getScript());
String[][] array=(String[][]) sds.getScript();
for(int m=0;m<5;m++) {
for(int n=0;n<5;n++) {
System.out.println(array[m][n]);
}
}
获取到的结果是个二维数组,然后循环取就行,对应的就是脚本数据集内每个格子的内容,这里做了个测试是 5 行 5 列的,实际应该用 length 去获取长度再循环