|
Posted on 2008-10-27 23:50 夢與橋 閱讀(678) 評論(0) 編輯 收藏 所屬分類: jsp程序設計
1、JavaReport輸出一維數據展現:
 <% @ page contentType="text/html; charset=GBK" %>
 <% @ page import="com.javareport.beans.*"%>
 <% @ page extends="com.javareport.http.WebReportEngine"%>
 <% !
public Report createReport(HttpServletRequest request) throws Exception{
//圖片類型數組
int[] chartType = new int[]{
Chart.CHART_PIE3D,Chart.CHART_STACKBAR3D,
Chart.CHART_CURVE,Chart.CHART_LINE,
Chart.CHART_POINT,Chart.CHART_INVERTED_CURVE,
Chart.CHART_INVERTED_LINE,Chart.CHART_INVERTED_STACKBAR};
//單元數據的顯示標簽字符串數組
String[] labels = new String[] {"太陽","星星","月亮","她的眼睛"};
//實例化報表對象
Report report = new Report();
//在頁眉中添加文本信息內容
report.addHeaderText("各種光源在我心中的位置統計");
//在報表的頁眉添加一條橫直線
report.addHeaderSeparator(1);
//在頁尾添加一條橫直線
report.addFooterSeparator(1);
//在頁尾添加文本信息內容
report.addFooterText("第{P}頁, 共{N}頁");
//循環輸出各種類型的圖片
for (int i = 0; i < chartType.length; i++) {
try {
//實例化一個圖表對象
Chart chart = new Chart((Number[][])getData(request));
//設置圖表中的單元數據的顯示的標簽
chart.setLabels(labels);
//設置統計圖的類型
chart.setStyle(chartType[i]);
//設置統計圖中顯示的時候把具體的數值也顯示出來
chart.setShowValue(true);
//在報表中添加文本信息內容
report.addText("報表中常見的報表統計圖表("+i+"): ");
//在報表中添加圖表信息內容
report.addChart(chart);
//在報表中添加換行符號
report.addBreak();
report.addBreak();
report.addBreak();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
return report;
}

//讀者可根據需要設置數組的值,或從數據庫中取出值放入數組中以動態顯示數據
public Double[][] getData(HttpServletRequest request){
Double[][] data = new Double[1][4];
data[0][0] = new Double(67);
data[0][1] = new Double(82);
data[0][2] = new Double(74);
data[0][3] = new Double(100);
return data;
}
//定制Web報表在頁面首部顯示的工具欄為標準的樣式,增加一個"返回"按鈕,返回到首頁
public String getToolbarScript(HttpServletRequest request){
return "<a href=\"../index.htm\"><img src=\""+request.getRequestURI()+
"?op=Resource&name=/resource/back.gif\" border=\"0\" alt=\"返回\"></a>";
}
%>
附:二維數據圖形與一維數據圖形的區別是在數據展現上加大了數據的展現量,在同一個單元數據標簽處可顯示屬于同一個單元的多個數據。修改改getData()方法的內容如下:
 public Double[][] getData(HttpServletRequest request) {
Double[][] data = new Double[4][4];
data[0][0] = new Double(67);data[0][1] = new Double(82);
data[0][2] = new Double(74);data[0][3] = new Double(100);
data[1][0] = new Double(67);data[1][1] = new Double(82);
data[1][2] = new Double(74);data[1][3] = new Double(100);
data[2][0] = new Double(67);data[2][1] = new Double(82);
data[2][2] = new Double(74);data[2][3] = new Double(100);
data[3][0] = new Double(67);data[3][1] = new Double(82);
data[3][2] = new Double(74);data[3][3] = new Double(100);
return data;
}
2、JavaReport輸出報表:
 <% @ page contentType="text/html; charset=GBK" %>
 <% @ page import="java.awt.*"%>
 <% @ page import="com.javareport.beans.*"%>
 <% @ page extends="com.javareport.http.WebReportEngine"%>
 <% !
public Report createReport(HttpServletRequest request) throws Exception{
//實例化報表對象
Report report = new Report();
//在頁眉中添加文本信息內容
report.addHeaderText("報表輸出示例");
//在報表的頁眉添加一條橫直線
report.addHeaderSeparator(1);
//在頁尾添加一條橫直線
report.addFooterSeparator(1);
//在頁尾添加文本信息內容
report.addFooterText("第{P}頁, 共{N}頁");
//在報表中添加文本信息內容
report.addText("銷售情況一覽表(合并表格):");
//在報表中添加換行符號
report.addBreak();
//在報表中添加表格
report.addTable(getTable());
//在報表中添加換行符號
report.addBreak();

return report;
}
//------得到銷售情況一覽表(合并表格)對象------
public Table getTable(){
String[][] data = getTotalData();
Table table = new Table(data);
table.setAlignment(Table.H_CENTER + Table.V_CENTER);
table.setColAutoSize(true);
table.setRowBackground(0,Color.LIGHT_GRAY);
table.setRowBackground(1,Color.LIGHT_GRAY);
table.setColBackground(0,Color.LIGHT_GRAY);
table.setRowBackground(7,new Color(255,255,128));
table.setHeaderRowCount(2);
table.setHeaderColCount(1);
table.setRowBorder(table.LINE_THIN);
table.setColBorder(table.LINE_THIN);
table.setCellSpan(0,0,new Dimension(1,2));
table.setCellSpan(0,1,new Dimension(2,1));
table.setCellSpan(0,3,new Dimension(2,1));
table.setCellSpan(0,3,new Dimension(2,1));
return table;
}

//生成銷售情況數據,實際工程中一般從數據庫中獲取
public String[][] getData(){
String[][] data = new String[6][4];
data[0][0] = "區域"; data[0][1] = "第一季度"; data[0][2] = "第二季度"; data[0][3] = "第三季度";
data[1][0] = "華南地區"; data[1][1] = "¥2,000,000";
data[1][2] = "¥2,500,000"; data[1][3] = "¥2,200,000";
data[2][0] = "華東地區"; data[2][1] = "¥6,000,000";
data[2][2] = "¥4,500,000"; data[2][3] = "¥4,800,000";
data[3][0] = "華中地區"; data[3][1] = "¥500,000";
data[3][2] = "¥400,000"; data[3][3] = "¥700,000";
data[4][0] = "華北地區"; data[4][1] = "¥3,000,000";
data[4][2] = "¥3,200,000"; data[4][3] = "¥2,500,000";
data[5][0] = "東北地區"; data[5][1] = "¥4,000,000";
data[5][2] = "¥5,000,000"; data[5][3] = "¥4,400,000";
return data;
}
//得到銷售匯總統計數據,實際工程中一般從數據庫中獲取
public String[][] getTotalData(){
String[][] data = new String[8][5];
data[0][0] = "區域"; data[0][1] = "上半年"; data[0][3] = "下半年";
data[1][1] = "第一季度"; data[1][2] = "第二季度"; data[1][3] = "第三季度";data[1][4] = "第四季度";
data[2][0] = "華南地區"; data[2][1] = "¥2,000,000"; data[2][2] = "¥2,500,000";
data[2][3] = "¥2,200,000";data[2][4] = "¥0";
data[3][0] = "華東地區"; data[3][1] = "¥6,000,000"; data[3][2] = "¥4,500,000";
data[3][3] = "¥4,800,000";data[3][4] = "¥0";
data[4][0] = "華中地區"; data[4][1] = "¥500,000"; data[4][2] = "¥400,000";
data[4][3] = "¥700,000";data[4][4] = "¥0";
data[5][0] = "華北地區"; data[5][1] = "¥3,000,000"; data[5][2] = "¥3,200,000";
data[5][3] = "¥2,500,000";data[5][4] = "¥0";
data[6][0] = "東北地區"; data[6][1] = "¥4,000,000"; data[6][2] = "¥5,000,000";
data[6][3] = "¥4,400,000";data[6][4] = "¥0";
data[7][0] = "總計"; data[7][1] = "¥15,500,000"; data[7][2] = "¥15,600,000";
data[7][3] = "¥14,600,000";data[7][4] = "¥0";
return data;
}
//定制Web報表在頁面首部顯示的工具欄為標準的樣式,增加一個"返回"按鈕,返回到首頁
public String getToolbarScript(HttpServletRequest request){
return "<a href=\"../index.htm\"><img src=\""+request.getRequestURI()+
"?op=Resource&name=/resource/back.gif\" border=\"0\" alt=\"返回\"></a>";
}
%>
注:實際工程中,報表的數據往往來自于數據庫,需要在getTotalData()方法中編寫代碼從數據庫中得到統計數據,統計方法可以是使用特定的SQL語句或取出數據后在Java語句中統計。輸出報表還有一種更直接的方法,就是用SQL語句查詢出數據庫中的數據后,得到一個ResultSet對象,如rs,再用如語句:RsTable rsTable=new RsTable(rs),重載如下方法:public RsTable getTable(HttpServletRequest request)throws Exception將返回值為rsTable,即可將數據庫查詢的結果作二維表格中的數據直接輸出,不必再轉換成二維數組中的再數據再輸出到報表。
|