<%@page import="java.util.Locale"%> <%@page import="com.uas.cr.util.ConnectionUtil"%> <%@page import="com.crystaldecisions.sdk.occa.report.lib.IStrings"%> <%@page import="com.crystaldecisions.sdk.occa.report.application.ISubreportClientDocument"%> <%@page import="com.crystaldecisions.sdk.occa.report.application.DBOptions"%> <%@page import="java.io.PrintStream"%> <%@page import="com.crystaldecisions.sdk.occa.report.application.ReportClientDocument"%> <%@page import="com.crystaldecisions.sdk.occa.report.data.ConnectionInfoKind"%> <%@page import="com.crystaldecisions.sdk.occa.report.lib.PropertyBag"%> <%@page import="com.crystaldecisions.sdk.occa.report.data.ConnectionInfo"%> <%@page import="com.crystaldecisions.sdk.occa.report.application.OpenReportOptions"%> <%@page import="java.io.ByteArrayOutputStream"%> <%@page import="com.crystaldecisions.sdk.occa.report.data.IConnectionInfo"%> <%@page import="com.crystaldecisions.sdk.occa.report.data.ConnectionInfos"%> <%@page import="com.uas.cr.entity.DB"%> <%@page import="com.uas.cr.listener.ContextInitListener"%> <%@page import="java.io.File"%> <%@page import="com.uas.cr.util.DES"%> <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% try { String key = "12345678"; DES des = new DES(); String reportName = request.getParameter("reportfile"); String enuu = request.getParameter("enuu"); String realPath = application.getRealPath(request.getRequestURI()); java.io.File transFile = new java.io.File(realPath); reportName = transFile.getParentFile().getParentFile().getPath() + "/rpt"+"/" + enuu + "/" + des.decrypt(reportName, key).toUpperCase().replace("%2f", File.separator); File file = new File(reportName); String rcondition = request.getParameter("rcondition"); DB db = ContextInitListener.getDB(); if ( !file.exists() || db == null) { out.println("非法请求,未找到报表资源 " + reportName); return; } ReportClientDocument clientDoc = new ReportClientDocument(); clientDoc.setReportAppServer(ReportClientDocument.inprocConnectionString); clientDoc.setLocale(Locale.CHINA); // Open report clientDoc.open(reportName, OpenReportOptions._openAsReadOnly); //set datasource ConnectionUtil.setDatasource(clientDoc.getDatabaseController(), db); //set the datasource for the subreports IStrings subreportNames = clientDoc.getSubreportController().getSubreportNames(); for (int i = 0; i < subreportNames.size(); i++) { ISubreportClientDocument subreportClientDoc = clientDoc.getSubreportController().getSubreport(subreportNames.getString(i)); ConnectionUtil.setDatasource(subreportClientDoc.getDatabaseController(), db); } session.setAttribute("reportSource", clientDoc.getReportSource()); session.setAttribute("condition", rcondition); // view response.sendRedirect("viewer.jsp"); } catch (Exception e) { ByteArrayOutputStream ostr = new ByteArrayOutputStream(); e.printStackTrace(new PrintStream(ostr)); out.println(ostr.toString()); try { ostr.close(); } catch (Exception e1) { } } %> 报表