java报表数据如何取_API编辑报表直接将数据取出放入单元格

业务需求:

通过在页面点击一个按钮,启动远程设计器,远程设计器中自动打开对应的报表,该报表名为:ApiEditRaq.raq,原型如下图:

imgServlet?fileID=b313cf6f-1bf7-49a7-9cc9-c42758a8937e

但是通过远程设计器打开之后,需要将“类别名称列”自动填上跟ID相对应的值,并另存为一张新报表,名为:remote.raq,如下图:

imgServlet?fileID=19f49d10-3438-4dbf-a7e8-e8a247601b78

解决办法:

先通过API读取该报表,循环遍历A2-A8格子里面的值,将这些值作为sql语句的条件,到数据库查询出“类别”表中相对应的“类别名称”的值,然后将这些“类别名称”的值一个个放到B2-B8里面。

具体代码如下:

package ApiTest;

import com.runqian.report4.model.*;

import com.runqian.report4.usermodel.INormalCell;

import com.runqian.report4.util.ReportUtils;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.OutputStream;

import java.sql.*;

import com.runqian.report4.model.ReportDefine;

import com.runqian.report4.model.engine.ExtCellSet;

import com.runqian.report4.usermodel.Context;

import com.runqian.report4.usermodel.Engine;

import com.runqian.report4.usermodel.IReport;

public class ApiEditRaq {

public void ApiEditRaq() throws Exception{

String raqName=”remote.raq”;//定义报表名,此处可接受页面参数,根据页面参数不同动态生成报表名

String raqPath=”D:/”;

String readPath = “D:\\ApiEditRaq.raq”;

int c;

ReportDefine rd = (ReportDefine) ReportUtils.read(readPath);//读取报表模版

c=rd.getRowCount();//获取报表总行数

System.out.println(“报表总行数:“+rd.getRowCount());

for(int i=2;i<=c;i++){

String value = (String) rd.getCell(i, (short)1).getValue();//获取单元格的值

System.out.println(“单元格值:“+rd.getCell(i, (short)1).getValue());

Class.forName(“org.hsqldb.jdbcDriver”).newInstance();

Connection conn= DriverManager.getConnection(“jdbc:hsqldb:hsql://localhost/runqianDB”,”sa”,”");

Statement stmt=conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);

String sql=”select distinct 类别名称 from 类别 where 类别ID=”+value; //从数据表中取字段值

ResultSet rs=stmt.executeQuery(sql);

while(rs.next()){

INormalCell icell_11 = rd.getCell(i, (short) 2);//从第二行的第二列开始,i表示第二行,short(2)即第二列

icell_11.setValue(rs.getString(1));//将从数据库中取出数据放到单元格中

}

OutputStream os = new FileOutputStream( raqPath+”/”+raqName );

ReportUtils.write(os,rd);//保存报表模板在D盘根目录下

}

}

public static void main (String [] args) throws Exception{

ApiEditRaq aer = new ApiEditRaq();

aer.ApiEditRaq();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值