我在网上搜了下,大概有ireport&jasperreport和jfreereport两种,但是介绍怎么用的资料很少,谁做过这方面的东东烦劳您帮我一下,谢谢!
分不够再加

解决方案 »

  1.   

    用ireport制作要打印的文件,编译生成*.jasper(例如:classic.jasper)文件,把该文件放在jasperreport中report文件夹中,然后套在下面的程序:<%@ page contentType="text/html; charset=gb2312"%>
    <%@ page import="javax.naming.Context"%>
    <%@ page import="javax.sql.DataSource"%>
    <%@ page import="javax.naming.InitialContext"%>
    <%@ page import="java.sql.*"%>
    <%@ page import="javax.sql.*"%><%@ page errorPage="error.jsp" %>
    <%@ page import="net.sf.jasperreports.engine.*" %>
    <%@ page import="net.sf.jasperreports.engine.util.*" %>
    <%@ page import="net.sf.jasperreports.engine.export.*" %>
    <%@ page import="net.sf.jasperreports.j2ee.servlets.*" %>
    <%@ page import="java.util.*" %>
    <%@ page import="java.io.*" %>
    <%
       Connection conn;
       try{
           Context initCtx = new InitialContext();
           Context envCtx=(Context) initCtx.lookup("java:comp/env");
           //从Context中lookup数据源
           ds=(DataSource)envCtx.lookup("DbConn");
           conn=ds.getConnection();
                }catch(Exception ne){
                   out.println(ne);
               }
    File reportFile = new File(application.getRealPath("/reports/classic.jasper"));
        if (!reportFile.exists())
    throw new JRRuntimeException("File Test.jasper not found. The report design must be compiled first.");JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());Map parameters = new HashMap();
    parameters.put("ReportTitle", "Address Report");
    parameters.put("BaseDir", reportFile.getParentFile());JasperPrint jasperPrint =
    JasperFillManager.fillReport(
    jasperReport,
    parameters,
    conn
    );JRHtmlExporter exporter = new JRHtmlExporter();StringBuffer sbuffer = new StringBuffer();session.setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
    exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
    exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "../servlets/image?image=");exporter.exportReport();       conn.close();%>注意:
    "DbConn"是数据源的名字,
    "/reports/classic.jasper"这个路径一定要正确
      

  2.   

    能否提供完整例子学习吗?谢谢jr_zhang。 我的QQ:50887355
      

  3.   

    现在我选用了ireport&jasperreport。但是我在试验饼状图的时候出现了下面的错误:
    Error&nbsp;filling&nbsp;print...&nbsp;Null&nbsp;'key'&nbsp;argument. 
    java.lang.IllegalArgumentException:&nbsp;Null&nbsp;'key'&nbsp;argument.&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.jfree.data.DefaultKeyedValues.setValue(DefaultKeyedValues.java:225)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.jfree.data.general.DefaultPieDataset.setValue(DefaultPieDataset.java:187)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.jasperreports.charts.fill.JRFillPieDataset.customIncrement(JRFillPieDataset.java:158)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.jasperreports.engine.fill.JRFillElementDataset.increment(JRFillElementDataset.java:169)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.jasperreports.engine.fill.JRCalculator.calculateVariables(JRCalculator.java:152)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:604)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:209)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:109)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:751)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:660)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:815)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.lang.Thread.run(Thread.java:595)&nbsp; 
    Print was not filled. Try using an EmptyDataSource...
    谁能帮我解决这个问题?非常感谢
    解决后马上给分