1. 程式人生 > >iReport學習二:javabean作為資料來源

iReport學習二:javabean作為資料來源

在IReport中是Javabean作為資料來源 因為在專案中用到報表功能學習了這個Ireport做為報表設計,期初遇到很多問題,最後還是出來了

初次研究 網上也看了很多文章雜七雜八 來點簡單的 關注重點一些基本操作就不在描述了

1、看看實體類 getXXX() setXXX()就濾過了

package org.share.domain.tree.entity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class UserInfo implements Serializable {

	private static final long serialVersionUID = -7171469571123003370L;
	private String user_id;
	private String user_name;
	private String age;
	private String phone;
	private String address;

	public static List<UserInfo> getListUserInfo(){
	UserInfo u=	new UserInfo();
	u.setAddress("aaaaaaaaaaaaa");
	u.setAge("2");
	u.setPhone("1232423423");
	u.setUser_name("aaaaa");
	List<UserInfo> user=new ArrayList<UserInfo>();
	user.add(u);
	user.add(u);
	return user;
	} 
}
2、開啟軟體 將javabean所在class新增到工具中的classpath中,我這裡用的是maven  選擇後點擊儲存

3、我用了個list控制元件 加上一個矩形控制元件 如圖

4、把Javabean中的欄位新增到list控制元件中的資料來源中 如圖

5、將欄位新增到控制元件上 如圖

6、給元件list設定資料來源 connection/datasource expression 表示式:$P{REPORT_PARAMETERS_MAP}.get("beans") 因為我後臺map中設定的名就叫beans

7、後臺程式碼 我用的是spingmvn 只有來生成pdf檔案 沒其他操作:

@RequestMapping(value="/csd",method=RequestMethod.GET)
	public void createFilePdfsd(HttpServletRequest request){
		//路徑動態錄入需要生產的pdf檔案位置
		String fileepath=request.getSession().getServletContext().getRealPath("template/repConReport.pdf");
		try{
			//判斷檔案是否存在
			  File f=new File(fileepath);
			  if(!f.exists()){
				  f.createNewFile();
			  }
			  //自定義資料來源
			  Map<String, Object> parameters=new HashMap<String, Object>();

			  //獲取Javabean list
			  List<UserInfo> userList= UserInfo.getListUserInfo();
			  //資料來源為javabean
 			  JRDataSource data= new JRBeanCollectionDataSource(userList);
 			  //設定資料
 			  parameters.put("beans", data);
			  //模板檔案
			  String ctxpathIreport=request.getSession().getServletContext().getRealPath("jasper/report5.jasper");
			  File reportFile=new File(ctxpathIreport);
			  //實際中編譯報表很耗時,採用Ireport編譯好的報表
			  JasperReport jasperReport=(JasperReport)JRLoader.loadObject(reportFile);	
			  //填充資料
		      JasperPrint jasperPrint=JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
		      //匯出pdf檔案
		      JasperExportManager.exportReportToPdfFile(jasperPrint,fileepath);
		  }catch (Exception e) {
			e.printStackTrace();
		  }
	}

8、效果圖效果圖如下: