日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iReport工具的使用(三)

發布時間:2024/9/5 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iReport工具的使用(三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java后臺代碼的實現

申明:直接拷貝代碼會有錯誤,這里只是為了說明流程。

前面一節中已經創建了DataBean,這一節主要來完成報表的填充。

1、?需要把所有報表中展現的數據封裝成一個DataBean對象的List

package?direction.shoufei.report.groupyearfee.model;

import?java.util.List;
import?direction.shoufei.report.groupyearfee.data.CenterYearFee;

public?class?CenterYearFeeModel?{
????
public?List<CenterYearFee>?getCenterYearFeeList(String?year)?{
????????
//這里通過連接數據庫或者其它方式將報表中展現的數據封裝為一個List
????????return?List對象;
????}
}

?

2、?? ?生成數據源,必須實現JRDataSource接口package?direction.shoufei.report.groupyearfee.datasource;

import?java.util.ArrayList;
import?java.util.List;

import?net.sf.jasperreports.engine.JRDataSource;
import?net.sf.jasperreports.engine.JRException;
import?net.sf.jasperreports.engine.JRField;
import?direction.shoufei.report.groupyearfee.data.CenterYearFee;
import?direction.shoufei.report.groupyearfee.model.CenterYearFeeModel;

public?class?CenterYearFeeDataSource?implements?JRDataSource?{

????
private?List<CenterYearFee>?data?=?new?ArrayList<CenterYearFee>();

????
public?CenterYearFeeDataSource(String?year)?{
????????data?
=?new?CenterYearFeeModel().getCenterYearFeeList(year);
????}

????
private?int?index?=?-1;

????@Override
????
public?Object?getFieldValue(JRField?field)?throws?JRException?{
????????Object?value?
=?null;

????????String?fieldName?
=?field.getName();

????????
if?("centerId".equals(fieldName))?{
????????????value?
=?data.get(index).getCenterId();
????????}?
else?if?("centerName".equals(fieldName))?{
????????????value?
=?data.get(index).getCenterName();
????????}?
else?if?("summary".equals(fieldName))?{
????????????value?
=?data.get(index).getSummary();
????????}?
else?if?("preYearRate".equals(fieldName))?{
????????????value?
=?data.get(index).getPreYearRate();
????????}?
else?if?("month1Fee".equals(fieldName))?{
????????????value?
=?data.get(index).getMonth1Fee();
????????}?
else?if?("month2Fee".equals(fieldName))?{
????????????value?
=?data.get(index).getMonth2Fee();
????????}?
else?if?("month3Fee".equals(fieldName))?{
????????????value?
=?data.get(index).getMonth3Fee();
????????}
????????...
????????
return?value;
????}

????@Override
????
public?boolean?next()?throws?JRException?{
????????index
++;
????????
return?(index?<?data.size());
????}
}

?

3、?填充報表

a-接口

package?direction.shoufei.report.groupyearfee.service;

public?interface?CenterYearFeeService?{
????
/**
?????*?填充報表
?????*?
@param?year?某年的報表
?????
*/
????
void?fillCenterYearFeeToReport(String?year);
}

b-填充報表的實現

package?direction.shoufei.report.groupyearfee.service.support;

import?java.io.File;
import?java.util.Date;
import?java.util.HashMap;
import?java.util.Map;

import?net.sf.jasperreports.engine.JRException;
import?net.sf.jasperreports.engine.JRRuntimeException;
import?net.sf.jasperreports.engine.JasperFillManager;
import?net.sf.jasperreports.engine.JasperPrint;
import?net.sf.jasperreports.j2ee.servlets.BaseHttpServlet;
import?direction.framework.utils.WebRootPath;
import?direction.shoufei.report.groupyearfee.datasource.CenterYearFeeDataSource;
import?direction.shoufei.report.groupyearfee.service.CenterYearFeeService;
import?direction.shoufei.report.util.DateFormatUtil;
import?flex.messaging.FlexContext;

public?class?CenterYearFeeServiceImpl?implements?CenterYearFeeService{

????@Override
????
public?void?fillCenterYearFeeToReport(String?year)?{
????????
//用iReport設計好的報表編譯之后的路徑
????????String?reportFileName?=?new?WebRootPath().getWebRootPath()
????????
+?"/reports/shoufei/groupyearfee/GroupYearFee.jasper";
????????File?reportFile?
=?new?File(reportFileName);
????????
if?(!reportFile.exists())
????????????
throw?new?JRRuntimeException(
????????????????????
"File?GroupYearFee.jasper?not?found.?The?report?design?must?be?compiled?first.");
????????
//填充報表時向報表傳遞的參數
????????Map?parameters?=?new?HashMap();
????????parameters.put(
"QueryYear",?year);
????????
????????String?endTimeStr?
=?year+"-12-26";
????????Date?endTime?
=?DateFormatUtil.getDateByStr(endTimeStr);
????????
if(new?Date().getTime()>endTime.getTime()){
????????????endTimeStr?
=?DateFormatUtil.getStrByDate(endTime);
????????}
else{
????????????endTimeStr?
=?DateFormatUtil.getStrByDate(new?Date());
????????}
????????
????????parameters.put(
"QueryEndTime",?endTimeStr);
????????parameters.put(
"PreYear",?DateFormatUtil.getPreYear(year));
????????
????????
try?{
????????????
//這里將生成的數據源和參數填充到報表里
????????????JasperPrint?jasperPrint?=?JasperFillManager.fillReport(
????????????????????reportFileName,?parameters,
????????????????????
new?CenterYearFeeDataSource(year));
????????????FlexContext.getHttpRequest().getSession().setAttribute(
????????????????????BaseHttpServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
????????????????????jasperPrint);
????????}?
catch?(JRException?e)?{
????????????e.printStackTrace();
????????}
????}
}

?

這樣就完成了報表的填充,報表的展現將在下一節說明。

?

?

轉載于:https://www.cnblogs.com/wangtory/archive/2011/03/21/iReport3.html

總結

以上是生活随笔為你收集整理的iReport工具的使用(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。