2010-10-15 68 views
0

我正在使用iReport來製作JRXML文件。要使用Java Struts導出這些數據,我使用下面的代碼。以HTML格式導出iReport圖表

public ActionForward reportExport(ActionMapping mapping, ActionForm form, 
    HttpServletRequest req, HttpServletResponse res) throws Exception { 
    String reportType2=req.getParameter("reporttype"); 
    System.out.println("reportType2"+reportType2); 
    String filename = "slademofinalreport1.jrxml"; 
    /*String reporttype = "pdf";*/ 
    String reporttype = reportType2; 
    System.out.println(filename); 
    System.out.println(reporttype); 

    Class.forName("com.mysql.jdbc.Driver"); 
    Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/epim","", ""); 
    String query="select projectname,processname,queuename,sladuedate,d.createddate,d.lastupdatedate,count(d.documentid)as numofdocuments,datediff(d.createddate,d.lastupdatedate)/count(d.documentid) as averagesla,datediff(d.sladuedate,d.createddate) as sladefined from epim.mstqueue mq,epim.userproject u,epim.documentqueuedetails d,epim.mstproject mproj,epim.mstprocess mproc where d.projectid=u.projectid and u.userid=13 and mproj.projectid=d.projectid and mproc.processid=d.processid and mq.queueid=d.queueid group by queuename "; 

    PreparedStatement stmt1=con.prepareStatement(query); 
    //stmt1.setInt(1,200); 
    java.sql.ResultSet rs3=stmt1.executeQuery(); 
    /*Statement stmt1=(Statement) con.createStatement(); 
    java.sql.ResultSet rs3= stmt1.executeQuery("select projectname,processname,queuename,sladuedate,d.createddate,d.lastupdatedate,count(d.documentid)as numofdocuments,datediff(d.createddate,d.lastupdatedate)/count(d.documentid) as averagesla,datediff(d.sladuedate,d.createddate) as sladefined from epim.mstqueue mq,epim.userproject u,epim.documentqueuedetails d,epim.mstproject mproj,epim.mstprocess mproc where d.projectid=u.projectid and u.userid=13 and mproj.projectid=d.projectid and mproc.processid=d.processid and mq.queueid=d.queueid group by queuename");*/ 
    JRResultSetDataSource obj=new JRResultSetDataSource(rs3); 

// String path = application.getRealPath("/"); 
    JasperReport jasperReport = JasperCompileManager.compileReport("D:/subash/kmsnewwork/KMS_SUBASH/WebContent/jasperreport/"+ filename); 
    System.out.println("Report Compiled..."); 
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,null,obj); 
    System.out.println("Report Created..."); 
    ServletOutputStream ouputStream = res.getOutputStream(); 
    JRExporter exporter = null; 

    if("pdf".equalsIgnoreCase(reporttype)) 
    { 
    res.setContentType("application/pdf"); 
    res.setHeader("Content-Disposition", "inline; filename=\"file.pdf\""); 

    exporter = new JRPdfExporter(); 
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream); 
    } 
    else if("rtf".equalsIgnoreCase(reporttype)) 
    { 
    res.setContentType("application/rtf"); 
    res.setHeader("Content-Disposition", "inline; filename=\"file.rtf\""); 

    exporter = new JRRtfExporter(); 
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream); 
    } 
    else if("html".equalsIgnoreCase(reporttype)) 
    { 
    exporter = new JRHtmlExporter(); 
    exporter.setParameter(JRHtmlExporterParameter.OUTPUT_STREAM,false); 
    exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, new Boolean(false)); 

    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream); 
    } 
    else if("xls".equalsIgnoreCase(reporttype)) 
    { 
    res.setContentType("application/xls"); 
    res.setHeader("Content-Disposition", "attachment; filename=\"file.xls\""); 

    exporter = new JRXlsExporter(); 
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream); 
    } 
    else if("csv".equalsIgnoreCase(reporttype)) 
    { 
    res.setContentType("application/csv"); 
    res.setHeader("Content-Disposition", "inline; filename=\"file.csv\""); 

    exporter = new JRCsvExporter(); 
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream); 
    } 

    try 
    { 
    exporter.exportReport(); 
    } 
    catch (JRException e) 
    { 
    throw new ServletException(e); 
    } 
    finally 
    { 
    if (ouputStream != null) 
    { 
    try 
    { 
    ouputStream.close(); 
    } 
    catch (IOException ex) 
    { 
    System.out.println("exception thrown"); 
    } 
    } 
    } 
    /*return mapping.findForward("goLoginPage");*/ 
    return mapping.findForward("goReportFilterPage"); 
} 

所有導出格式都獲取除HTML外的圖表。誰能幫我?我應該爲HTML做些額外的事情,因爲圖表沒有使用HTML格式顯示?

回答

1

與其他文件格式不同,圖像不嵌入在html文件中,因此需要特別小心。

JRHtmlExporterParameter:。

「的一個重要問題是圖像的HTML格式存儲的圖像作爲單獨的文件,因此出口商需要知道這些圖像將被存儲。如果它們被存儲在磁盤上的IMAGES_URI參數將使用包含磁盤文件名的字符串進行初始化,如果它們保留在內存中,則IMAGES_URI必須指向能夠將圖像發送到瀏覽器的資源(例如圖像servlet,如webapp示例中所示)。 「