Jasperreports+jaspersoft studio學習教程(七)- Table組件的使用

原文鏈接:https://blog.csdn.net/shiyun123zw/article/details/79210119

7.1 設計報表模板

 

7.1.1 新建模板DemoReport5.jrxml,去掉不需要的Band,保留Title,Page Header,Detail 1 , PageFooter。將組件Table拖入到Detail1 中,跳出Dataset窗口。選擇 Create .. ,然後Next




7.1.2 給Dataset命名。選擇 Createnew dateset ... ,然後Next







7.1.3 只保留Column Header,然後 Finish




7.1.4 點擊Detail中的Table組件進入到Table界面中。




7.1.5 在Column Header中右鍵Column1 選擇Create Column After,生成4個Column




7.1.6 一般表頭都是 合併列的複雜表頭。選擇Column1 右鍵 -》 Group Columns




在Columns[1]中的Column1右鍵Create Column after ,顯示如下:



將其他三個也如此操作




7.1.7 將組件Text Field 拖入表格中,並設置表頭名




7.1.8 在dateset1中新建Field屬性,並拖入到Table的Detail中,設置字體樣式(這裏自定義命名Filed,且注意類型)




7.1.9 返回到Main Report ,新建Fields 命名爲table Data,設置Class爲JRBeanCollectionDataSource,注意寫全路徑,新建一個Field爲Date,Class爲String





7.1.10 點擊Main Report 的Detail中的Table,顯示Properties後,點擊DataSet,選中Use a JRDatasource expression,將新建tableData寫入。





保存模板,並複製到JasperWeb項目中。



7.2 編寫Servlet注入數據源


7.2.1 新建Fields類和ModelTableSource類如下:

package com.jasper.bean;
 
public class Fields {
	
	private String field1;
	private String field2;
	private String field3;
	private String field4;
	private String field5;
	private String field6;
	private String field7;
	private String field8;
 
//get 和 set方法省略
 
}
package com.jasper.bean;
 
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
 
public class ModelTableSource {
	/**
	 * 注入table組件的數據源
	 */
	private JRBeanCollectionDataSource tableData;
	/**
	 * 當前時間(查詢時間)
	 */
	private String date;
// get和set方法省略
 
}

7.2.2 新建JasperServlet5 ,doGet內容如下:


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Map<String,Object> parameters = new HashMap<String,Object>(16);
		
		String jrxmlPath = request.getServletContext().getRealPath("/")+"/jrxml/DemoReport5.jrxml";
		//由jrxml文件編譯後生產jasper文件的路徑
		String jasperPath = request.getServletContext().getRealPath("/")+"/jasper/DemoReport5.jasper";
		
		FileInputStream isRef = null;
		ServletOutputStream sosRef = null;
		
		try {
			//編譯jrxml生產jasper文件
			JasperCompileManager.compileReportToFile(jrxmlPath, jasperPath);
			
			isRef = new FileInputStream(new File(jasperPath));
			sosRef = response.getOutputStream();
			//組裝list數據源
			List<Fields> list = new ArrayList<Fields>();
			for(int i = 1 ; i <= 20; i++) {
				Fields fields = new Fields("field"+i,"field"+(i+1),"field"+(i+2),"field"+(i+3),"field"+(i+4),"field"+(i+5),"field"+(i+6),"field"+(i+7));
				list.add(fields);
			}
			ModelTableSource mts = new ModelTableSource();
			mts.setDate(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
			mts.setTableData(new JRBeanCollectionDataSource(list));
			List<ModelTableSource> mlist = new ArrayList<ModelTableSource>();
			mlist.add(mts);
			//new JRBeanCollectionDataSource(list)  以javaBean爲數據源注入報表數據
			JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JRBeanCollectionDataSource(mlist));
			response.setContentType("application/pdf");
		} catch (JRException e) {
			
			e.printStackTrace();
		}finally {
			sosRef.flush();
			sosRef.close();
		}
	}

7.2.3 啓動tomcat並訪問







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章