3

JapserReportsJavaでレポートを表示するために使用しています。レポートをPDF形式で Web ブラウザーに送信できます。

レポートを形式で送信したいのですが、レポートをHTML形式で送信する方法は次のとおりHTMLです。

protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    File reportFile = new File(getServletConfig().getServletContext().getRealPath("/rpts/report1.jasper"));
    ServletOutputStream servletOutputStream = response.getOutputStream();
    byte[] bytes = null;
    Map<String,Object> parameter = new HashMap<String,Object>();
    Connection con = DBConnection.getConnection("");
    try
    {
        bytes = JasperRunManager.runReportToHtmlFile(reportFile.getPath(),parameter,con).getBytes();
        response.setContentType("text/html");
        response.setContentLength(bytes.length);
        servletOutputStream.write(bytes, 0, bytes.length);
        servletOutputStream.flush();
        servletOutputStream.close();
    }
    catch (JRException e)
    {
        System.out.println(e);
    }
}

path上記の方法は、生成されHTMLたファイルの印刷です。パスを確認するHTMLと、データとともにファイルが生成されました。

コードに何か不足していますか?

前もって感謝します....

4

2 に答える 2

3

Content-Dispositionとhtmlファイル名を設定してみてください。

    response.setHeader("Content-Disposition","inline, filename=myReport.html");
    response.setContentType("text/html");
    response.setContentLength(bytes.length);
    servletOutputStream.write(bytes, 0, bytes.length);
    servletOutputStream.flush();
    servletOutputStream.close();

runReportToHtmlFileメソッドは、絶対ファイルパスを返します。出力ストリームに書き込む前に、生成されたhtmlファイルをバイト配列に読み込む必要があります。

以下のコードがあなたのために働くかもしれません。

        String reportPath =JasperRunManager.runReportToHtmlFile(reportFile.getPath(), parameter);
        File reportHtmlFile = new File(reportPath);
        FileInputStream fis = new FileInputStream(reportHtmlFile);
        byte[] bytes =  new byte[(int)reportHtmlFile.length()];
        fis.read(bytes);
        resp.setHeader("Content-Disposition","inline; filename=myReport.html");
        resp.setContentType("text/html");
        resp.setContentLength(bytes.length);
        servletOutputStream.write(bytes, 0, bytes.length);
        servletOutputStream.flush();
        servletOutputStream.close();
于 2013-03-14T12:09:39.720 に答える
-1

これを試して

public class ReportExample {



/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

ArrayList<City> cityList=new ArrayList<City>();

City city=new City();

city.setCityName("Kolkata");

city.setCountry("Country");

cityList.add(city);

InputStream inputStream;

try {

inputStream = new FileInputStream ("report1.jrxml");

DataBeanMaker dataBeanMaker = new DataBeanMaker();

JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(cityList);

Map parameters = new HashMap();



JasperDesign jasperDesign = JRXmlLoader.load(inputStream);

JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, beanColDataSource);

JasperExportManager.exportReportToPdfFile(jasperPrint, "testjasper.pdf"); 

   JasperViewer.viewReport(jasperPrint);

   JasperPrintManager.printReport(jasperPrint, true);

}catch(Exception e)

{e.printStackTrace();

}

}



}

 check the link http://javadispute.com/content/jasper-report-example
于 2013-03-14T18:27:54.957 に答える