知识库

推荐内容

快逸做的更好

产品优势

您的位置: 首页 > 报表技术分享 > 快逸报表组导出excel的方法介绍

快逸报表组导出excel的方法介绍

在实际的应用中,经常会有数据从excel导入系统数据库或者数据从系统中导入到excel,这两种业务操作快逸报表可以轻易地实现,但普通的导出数据大多都是一个报表导出到一个单独的excel中,或者多个报表导入一个excel中的多个sheet中,还有就是把报表组中所有报表导入道一个excel多个sheet。快逸报表提供了报表组导出excel的方法group_saveAsExcel(),但是不能满足客户的各种需求,如果客户需要不显示报表,直接导出excel,就要用快逸提供的接口如何实现这一业务。

一:实现思路

先读取报表组,分别计算报表组中的报表,然后把多个结果添加到导出列表,最后实现导出到excel的多个sheet中。

二:实现步骤

1.首先制作一个报表组(含有两个报表)

4.1.raq

 

4.2.raq

 

2:利用快逸提供的方法读入报表组,读入计算并导出,代码如下:

 

<%@ page contentType=”text/html;charset=gb2312″ %>

<%@ page import=”com.runqian.report4.usermodel.ReportGroup”%>

<%@ page import=”com.runqian.report4.view.excel.ExcelReport”%>

<%@ page import=”com.runqian.report4.ide.GroupEngine”%>

<%@ page import=”java.util.Enumeration”%>

<%@ page import=”java.util.HashMap”%>

<%@ page import=”java.util.Iterator”%>

<%@ page import=”java.util.Date”%>

<%@ page import=”java.text.SimpleDateFormat”%>

<%@ taglib uri=”/WEB-INF/runqianReport4.tld” prefix=”report” %>

<%@ page import=”com.runqian.report4.usermodel.Context”%>

<%@ page import=”com.runqian.report4.usermodel.IReport”%>

<%@ page import=”com.runqian.report4.usermodel.ParamMetaData”%>

 

 

 

<%

//报表文件相对路径

String reportFile=application.getRealPath(“/reportFiles/tianbaoraq/4.rpg”);

 

//新建一个 HashMap对象存放参数,map可以存放空参数。传递参数时名称要保证和报表组用到的参数名一致。

HashMap map=new HashMap();

Enumeration paramNames = request.getParameterNames();

if(paramNames!=null){

while(paramNames.hasMoreElements()){

String paramName = (String) paramNames.nextElement();

String paramValue=request.getParameter(paramName);

//把参数名和参数值分别加入到hashmapkeyvalue

map.put(paramName,paramValue);

}

}

 

 

//读取报表组

ReportGroup rg = ReportGroup.read(reportFile);

//报表组参数元数据

ParamMetaData rg_pmd=rg.getParamMetaData();

//设置报表组参数

if(rg_pmd !=null){

int rg_pmdNum = rg_pmd.getParamCount();

String rg_paramName=”";

for(int j=0; j<rg_pmdNum;j++){

rg_paramName=rg_pmd.getParam(j).getParamName();

for (Iterator it=map.keySet().iterator();it.hasNext();){

//遍历hashmap,将对应的参数写入报表组对象

String key= (String)it.next();

if(rg_paramName.equals(key)) {

rg_pmd.getParam(j).setValue((String)map.get(key));

}

}

}

}

//获取上下文

Context context = new Context();

//计算报表组

GroupEngine gEngine = new GroupEngine(rg, context);

 

//获取子报表数量

int num=rg.getItemCount();

//新建excelReport对象

ExcelReport er=new ExcelReport();//excel

//循环分别计算子报表

for(int i=0;i<num;i++){

IReport r = gEngine.get(i);

//生成子表的excel对象

er.export( “a”+i,r);

}

 

 

try{

//将多个子表的excel对象导入到一同个excel文件里。文件名拼上当前时间

 

Date currentTime = new Date();

SimpleDateFormat formatter = new SimpleDateFormat(“yyyyMMddhhmmss”);

String dateString = formatter.format(currentTime);

er.saveTo(“d:/”+dateString+”.xls”);

}catch(Exception e){

e.printStackTrace();

}

%>

 

<script>

alert(“导出完成。“);

</script>

三:运行此jsp,执行其中的代码

当页面中出现导出成功时,就说明报表组导出成功。并分别存储在a0 sheeta1 sheet

本文标签: