JAVA+jasperreports+iReport

來源:互聯網
上載者:User

項目中碰到報表的問題,把主要的過程和問題記錄下,備忘。

1、環境

JDK1.5,jasperreports-1.1.1,iReport-1.1.0

 2、中文問題

a、記得把itext-1.3.1.jar,iTextAsian.jar這兩個包放在iReport-1.1.0/lib目錄下,這兩個包裡面看下,大概就可以看出是用於定義字型的樣式等功能的;

b、iReport中,下面的參數要設定正確,如

 我就因為最下面的一欄忘設,報下面的異常資訊,以為是包的問題,搞了很久。

net.sf.jasperreports.engine.JRException: Could not load the following font : 
pdfFontName   : STSong-Light
pdfEncoding   : Cp1250
isPdfEmbedded : true  

3、報表的製做

a、先用iReport設計好報表的樣式、變數的,編譯成.jasper檔案,存在目錄下:F:/jasperreports-1.1.1-project/iReport-1.1.0/result。

b、在程式裡載入該檔案,填充資料後,輸出.pfd檔案,到上面的目錄中。代碼如下:

import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;

....................

try...{
              Connection conn = dao.getConnection();
              File jasperFile = new File("F:/jasperreports-1.1.1-project/iReport-1.1.0/result/lbssReport1.jasper");
              HashMap param = new HashMap();
            param.put("id","reportId");//傳遞參數;
            param.put("STRHQL","select loginname,lastname from t_user t");
            //直接將裝填過程產生的文檔匯出到pdf格式
            //JasperRunManager.runReportToPdfFile("F:/jasperreports-1.1.1-project/iReport-1.1.0/result/lbssReport1.jasper",param,conn);
            
            //標準流程:產生中間的print對象,然後再匯出成其他格式。 
            //裝載對象
            JasperReport report = (JasperReport)JRLoader.loadObjectFromLocation("F:/jasperreports-1.1.1-project/iReport-1.1.0/result/lbssReport1.jasper");
            //填充資料
            JasperPrint print = JasperFillManager.fillReport(report,param,conn);
            //匯出成pdf(需要包含iTextAsian.jar包);
            JasperExportManager.exportReportToPdfFile(print,"F:/jasperreports-1.1.1-project/iReport-1.1.0/result/lbssReport1.pdf");
              }catch(Exception e)...{
                  logger.error("產生報表出錯:"+e.getMessage());
                  throw new Exception("產生報表出錯:"+e.getMessage());
              }

要把jasperreports-1.1.1.jar,itext-1.3.1.jar,iTextAsian.jar這三個包放在項目的lib下,jasperreports包裡包含了所有相關類,在程式了就可以直接調用了。

代碼裡面param.put("id","reportId");//傳遞參數;   param.put("STRHQL","select loginname,lastname from t_user t");這兩行中"id","STRHQL"是報表中的外部變數。與iReport中的相對應,如下:

 好了,差不多了,看下運行出來的pdf檔案吧

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.