http://www.javaeye.com/topic/507427
今天學習了Java中使用JFreeChart,POI,JXL繪制圖表,操作excel表格問題,自己動手了寫了些小demo,不足之處,請大家指正。謝謝。 ^_^
完整的類檔案在附件中。并附上一張截圖
====================================
代碼『片段』
====================================
Java代碼
- /**
- * 根據資料設定圖表的相關資訊
- * @param categoryDataset
- * @return
- */
- public static JFreeChart createJFreeChart(CategoryDataset categoryDataset) {
- /**
- * 設定圖表的相關資訊,其參數依次為:
- * 圖表标題,縱坐标顯示提示,橫坐标顯示提示,要顯示的資料
- * 設定要顯示圖示柱狀的橫向或縱向.HORIZONTAL表示縱向,VERTICAL表示橫向
- * 後面三個boolean型的參數:
- * 第一個表示是否顯示柱狀圖例,true為顯示,false為不顯示
- */
- JFreeChart chart = ChartFactory.createBarChart("學生人數統計", "省份", "數量",
- categoryDataset, PlotOrientation.VERTICAL, true, true, false);
- // 設定背景顔色
- chart.setBackgroundPaint(Color.WHITE);
- CategoryPlot cateforyPlot = chart.getCategoryPlot();
- cateforyPlot.setBackgroundPaint(Color.WHITE);
- cateforyPlot.setDomainGridlinePaint(Color.WHITE);
- // 設定是否可見
- cateforyPlot.setDomainGridlinesVisible(true);
- // 設定柱狀的顔色
- cateforyPlot.setRangeGridlinePaint(Color.BLUE);
- return chart;
- }
- /**
- * 生成二維的柱狀圖
- * @param session 用戶端目前session
- * @param out 輸出流
- * @return 傳回所生成圖檔的URL
- */
- public static String getBarChartURL(HttpSession session, PrintWriter out) {
- String fileName = "";
- //調用靜态的方法擷取資料集
- CategoryDataset categoryDataset = getDataSet();
- //調用類中靜态方法建立圖表對象
- JFreeChart chart = createJFreeChart(categoryDataset);
- ChartRenderingInfo chartInfo = new ChartRenderingInfo(
- new StandardEntityCollection());
- try {
- //将生成的圖檔以PNG檔案格式顯示
- fileName = ServletUtilities.saveChartAsPNG(chart, 500, 300,
- chartInfo, session);
- } catch (IOException e) {
- e.printStackTrace();
- }
- try {
- //向用戶端顯示圖檔
- ChartUtilities.writeImageMap(out, fileName, chartInfo, true);
- } catch (IOException e) {
- e.printStackTrace();
- }
- out.flush();
- return fileName;
- }
/** * 根據資料設定圖表的相關資訊 * @param categoryDataset * @return */public static JFreeChart createJFreeChart(CategoryDataset categoryDataset) {/** * 設定圖表的相關資訊,其參數依次為: * 圖表标題,縱坐标顯示提示,橫坐标顯示提示,要顯示的資料 * 設定要顯示圖示柱狀的橫向或縱向.HORIZONTAL表示縱向,VERTICAL表示橫向 * 後面三個boolean型的參數: * 第一個表示是否顯示柱狀圖例,true為顯示,false為不顯示 */JFreeChart chart = ChartFactory.createBarChart("學生人數統計", "省份", "數量",categoryDataset, PlotOrientation.VERTICAL, true, true, false);// 設定背景顔色chart.setBackgroundPaint(Color.WHITE);CategoryPlot cateforyPlot = chart.getCategoryPlot();cateforyPlot.setBackgroundPaint(Color.WHITE);cateforyPlot.setDomainGridlinePaint(Color.WHITE);// 設定是否可見cateforyPlot.setDomainGridlinesVisible(true);// 設定柱狀的顔色cateforyPlot.setRangeGridlinePaint(Color.BLUE);return chart;}/** * 生成二維的柱狀圖 * @param session 用戶端目前session * @param out 輸出流 * @return 傳回所生成圖檔的URL */public static String getBarChartURL(HttpSession session, PrintWriter out) {String fileName = "";//調用靜态的方法擷取資料集CategoryDataset categoryDataset = getDataSet();//調用類中靜态方法建立圖表對象JFreeChart chart = createJFreeChart(categoryDataset);ChartRenderingInfo chartInfo = new ChartRenderingInfo(new StandardEntityCollection());try {//将生成的圖檔以PNG檔案格式顯示fileName = ServletUtilities.saveChartAsPNG(chart, 500, 300,chartInfo, session);} catch (IOException e) {e.printStackTrace();}try {//向用戶端顯示圖檔ChartUtilities.writeImageMap(out, fileName, chartInfo, true);} catch (IOException e) {e.printStackTrace();}out.flush();return fileName;}