2010-10-15 49 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示例中所示)。 “