1. 程式人生 > >潤乾V5實現展現報表的同時匯出excel

潤乾V5實現展現報表的同時匯出excel



一些客戶提出需求希望在展現報表的時候,報表在後臺被自動匯出成excel到指定的路徑,而不用手動去點選匯出excel的按鈕。這個需求可以用潤乾的API來實現。

實現後臺自動匯出excel的思路為:用API讀入需要匯出的raq檔案,然後使用API計算報表,得到計算好的IReport物件,使用這個IReport物件匯出excel到指定的路徑,然後用bean的方式釋出報表。

實現後臺自動匯出excel到指定路徑的jsp程式碼如下所示:

<%@ page contentType="text/html;charset=UTF-8" %>

<%@ taglib uri="/WEB-INF/raqsoftReport.tld" prefix="report" %>

<%@ page import="com.raqsoft.report.model.ReportDefine"%>

<%@ page import="com.raqsoft.report.usermodel.Context"%>

<%@ page import="com.raqsoft.report.usermodel.Engine"%>

<%@ page import="com.raqsoft.report.usermodel.IReport"%>

<%@ page import="com.raqsoft.report.util.ReportUtils"%>

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

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

<html>

<body topmargin=0 leftmargin=0 rightmargin=0 bottomMargin=0 >

<%

//第一步,讀取報表模板

String report = request.getParameter( "rpx" );

String reportFile=application.getRealPath("/WEB-INF/reportFiles/"+report);

HashMap map=new HashMap();

Enumeration paramNames = request.getParameterNames();

if(paramNames!=null){

    while(paramNames.hasMoreElements()){

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

        String paramValue=request.getParameter(paramName);

        //把引數名和引數值分別加入到hashmap的key和value裡

        map.put(paramName,paramValue);

    }

}

ReportDefine rd = (ReportDefine) ReportUtils.read(reportFile);

//第二步,運算報表

Context context = new Context();

context.setParamMap(map);

Engine enging = new Engine(rd, context);

IReport iReport = enging.calc();

//匯出

String fileName = "E:/123.xls";

try {

    ReportUtils.exportToExcel(fileName, iReport, true);

} catch (Throwable e) {

e.printStackTrace();

}

request.setAttribute("ireport",iReport);

%>

<table align=left>

       <tr><td>

                     <report:html name="report1"

                     srcType="defineBean"

                     beanName="ireport"

                     funcBarLocation="top"

                     exceptionPage="/reportJsp/myError.jsp"

              />

       </td></tr>

</table>

</body>

</html>

將以上程式碼儲存為 excel.jsp 檔案儲存到web\webapps\demo\reportJsp 這個目錄下面。然後通過這個excel.jsp 去訪問報表。然後在對應的目錄下面查看回發現。excel檔案已經儲存到了對應的目錄下面。