java報表,Java報表開發

本文目錄一覽:

java怎麼做報表功能?

使用 JFreeChart 生成各種樣式的圖表

限於篇幅的問題我們在這裡只實現兩種常用的圖表,其他類型圖表讀者可以觸類旁通。我們先給出柱狀圖的實現,餅圖的實現再來跟柱狀圖進行比較。

1 柱狀圖

package lius.chart.demo;

import java.io.*;

import org.jfree.data.*;

import org.jfree.chart.*;

import org.jfree.chart.plot.*;

/**

* 該類用於演示最簡單的柱狀圖生成

* @author Winter Lau

*/

public class BarChartDemo {

public static void main(String[] args) throws IOException{

CategoryDataset dataset = getDataSet2();

JFreeChart chart = ChartFactory.createBarChart3D(

“水果產量圖”, // 圖表標題

“水果”, // 目錄軸的顯示標籤

“產量”, // 數值軸的顯示標籤

dataset, // 數據集

PlotOrientation.VERTICAL, // 圖表方向:水平、垂直

true, // 是否顯示圖例(對於簡單的柱狀圖必須是 false)

false, // 是否生成工具

false // 是否生成 URL 鏈接

);

FileOutputStream fos_jpg = null;

try {

fos_jpg = new FileOutputStream(“D:\\fruit.jpg”);

ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);

} finally {

try {

fos_jpg.close();

} catch (Exception e) {}

}

}

/**

* 獲取一個演示用的簡單數據集對象

* @return

*/

private static CategoryDataset getDataSet() {

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(100, null, “蘋果”);

dataset.addValue(200, null, “梨子”);

dataset.addValue(300, null, “葡萄”);

dataset.addValue(400, null, “香蕉”);

dataset.addValue(500, null, “荔枝”);

return dataset;

}

/**

* 獲取一個演示用的組合數據集對象

* @return

*/

private static CategoryDataset getDataSet2() {

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(100, “北京”, “蘋果”);

dataset.addValue(100, “上海”, “蘋果”);

dataset.addValue(100, “廣州”, “蘋果”);

dataset.addValue(200, “北京”, “梨子”);

dataset.addValue(200, “上海”, “梨子”);

dataset.addValue(200, “廣州”, “梨子”);

dataset.addValue(300, “北京”, “葡萄”);

dataset.addValue(300, “上海”, “葡萄”);

dataset.addValue(300, “廣州”, “葡萄”);

dataset.addValue(400, “北京”, “香蕉”);

dataset.addValue(400, “上海”, “香蕉”);

dataset.addValue(400, “廣州”, “香蕉”);

dataset.addValue(500, “北京”, “荔枝”);

dataset.addValue(500, “上海”, “荔枝”);

dataset.addValue(500, “廣州”, “荔枝”);

return dataset;

}

}

2 餅圖

package lius.chart.demo;

import java.io.*;

import org.jfree.data.*;

import org.jfree.chart.*;

/**

* 用於演示餅圖的生成

* @author Winter Lau

*/

public class PieChartDemo {

public static void main(String[] args) throws IOException{

DefaultPieDataset data = getDataSet();

JFreeChart chart = ChartFactory.createPie3DChart(“水果產量圖”, // 圖表標題

data,

true, // 是否顯示圖例

false,

false

);

// 寫圖表對象到文件,參照柱狀圖生成源碼

}

/**

* 獲取一個演示用的簡單數據集對象

* @return

*/

private static DefaultPieDataset getDataSet() {

DefaultPieDataset dataset = new DefaultPieDataset();

dataset.setValue(“蘋果”,100);

dataset.setValue(“梨子”,200);

dataset.setValue(“葡萄”,300);

dataset.setValue(“香蕉”,400);

dataset.setValue(“荔枝”,500);

return dataset;

}

}

3將生成的圖表移到瀏覽器上

package lius.chart.demo;

import java.io.IOException;

import javax.servlet.*;

import javax.servlet.http.HttpServlet;

import org.jfree.data.*;

import org.jfree.chart.*;

/**

* 演示通過 servlet 直接輸出圖表

* @author Winter Lau

*/

public class ChartDemoServlet extends HttpServlet {

public void service(ServletRequest req, ServletResponse res)

throws ServletException, IOException

{

res.setContentType(“image/jpeg”);

DefaultPieDataset data = getDataSet();

JFreeChart chart = ChartFactory.createPie3DChart(“水果產量圖”,

data,

true,

false,

false

);

ChartUtilities.writeChartAsJPEG(res.getOutputStream(),

100,chart,400,300,null);

}

/**

* 獲取一個演示用的簡單數據集對象

* @return

*/

private static DefaultPieDataset getDataSet() {

DefaultPieDataset dataset = new DefaultPieDataset();

dataset.setValue(“蘋果”,100);

dataset.setValue(“梨子”,200);

dataset.setValue(“葡萄”,300);

dataset.setValue(“香蕉”,400);

dataset.setValue(“荔枝”,500);

return dataset;

}

}

4高級主題

很多情況我們不僅僅要求可以在瀏覽器上顯示一個圖表,我們更需要客戶可以直接在圖表上做一下交互的操作,例如獲取信息提示,點擊圖表某個部分進行更詳細信息的展示等等。例如前面生成的簡單柱狀圖,用戶需要在看到柱狀圖後點擊某種水果例如是蘋果即可看到各個地區蘋果產量的情況。為此就要求該圖形具有交互操作的功能。在 HTML 中為了讓一個圖像具有可交互的功能就必須給該圖像定義一個 Map 對象。下表節選一段具有該功能的 HTML 代碼:

MAP NAME=”chartMap”

AREA SHAPE=”RECT” COORDS=”81,15,126,254″ href=”?series=0category=100″

title=”100 = 7,048″

onclick=”javascript:clickChart(‘100’);return false;”

AREA SHAPE=”RECT” COORDS=”143,27,188,255″ href=”?series=0category=200″

title=”200 = 6,721″

onclick=”javascript: clickChart (‘200’);return false;”

AREA SHAPE=”RECT” COORDS=”205,54,250,255″ href=”?series=0category=300″

title=”300 = 5,929″

onclick=”javascript: clickChart (‘300’);return false;”

AREA SHAPE=”RECT” COORDS=”267,85,312,255″ href=”?series=0category=400″

title=”400 = 5,005″

onclick=”javascript: clickChart (‘400’);return false;”

AREA SHAPE=”RECT” COORDS=”329,17,374,255″ href=”?series=0category=Diet”

title=”Diet = 7,017″ onclick=”javascript:

clickChart (‘Diet’);return false;”

/MAP

由此就產生了一個問題:如果根據一個圖像來生成對應的 MAP 對象。我們回頭看看剛才的代碼,在創建一個圖表對象時候有兩個參數,我們舉柱狀圖的例子來講這兩個參數就是 ChartFactory. createBarChart3D 方法中的最後兩個參數,這兩個參數的類型都是布爾值。這兩個參數意思分別是:是否創建工具提示 (tooltip) 以及是否生成 URL。這兩個參數分別對應著 MAP 中一個 AREA 的 title 屬性以及 href 屬性。

可是我想知道的是怎麼來產生這個 MAP 啊!哈哈,不要著急,JFreeChart 已經幫我們做好生成 MAP 對象的功能。為了生成 MAP 對象就要引入另外一個對象:ChartRenderingInfo。因為 JFreeChart 沒有直接的方法利用一個圖表對象直接生成 MAP 數據,它需要一個中間對象來過渡,這個對象就是 ChartRenderingInfo。

java做報表

把資料庫中需要的數據處理後做成可視化圖表,根據不同需求可以做成不同形式的圖表,節省時間,效果比較好,報表軟體國外的話水晶報表,SAP公司的商業報表工具,作為SAP「集團」下的報表組件模塊。10年事前盛行一時,後被SAP收購。但水晶報表(Crystal Report)在理論上只支持單數據集,對多集的支持依賴於資料庫的運算能力(叉乘與聯合等或寫存儲過程),多庫一般難以支持。

國內的話FineReport,目前國內報表軟體領域發展最成熟也是市場份額最高的。IDC的報告里,17年甚至超過SAP,IBM,在這個細分領域,也是Gartner的BI選型市場指南里唯一推薦的報表工具。零代碼開發,類似excel的設計方式,上手簡單。尤其數據字典、實際值和顯示值等的設計更是切入快速開發的要害,這些放在別的語言和體系下往往要大量代碼才能實現且頻繁需要的功能放在FineReport里卻只是幾個操作的事情。移動端報表+可視化大屏。

請教:什麼是報表工具或java報表 網上很多 都幹嘛的

報表是數據呈現的載體,功能也就是來展現數據的。

一般就是包括表格及統計圖這些類型,表格又分簡單的及複雜的報表格式,國外的表格一般較為簡單,從國外的報表產品也能看出來,但是國內的表格完全不同,也被稱為中國式複雜報表。 另外表格也具體數據錄入功能,在前端可以增刪改數據,提交入庫或者其他數據文件。並且可以嵌入到工作流中替代原產品中功能相對較弱的表單部分。

報表工具就是來快速開發上面提高的報表的,開發用於系統集成用於web端呈現。

目前國內報錶廠商的功能基本都差不多了,比如老牌潤乾、Fr等,報表軟體本身沒什麼技術門檻可言,順手就行。 考慮價格的就對比性價比嘍。

支持Java的報表工具都有哪些?

支持Java的報表工具 :

我們所說的」支持」Java的報表工具.其實就是非Java的報表工具,但是可以在Java程序中調用. 這樣的產品很多,總的講一大類是採用獨立報表伺服器的,如Bo/Crystal Report,Brio,Cognos等等,另一大類是在前端有控制項的,如數巨報表等。

關於Java的報表工具 我們可以到思邁特軟體Smartbi了解一下,廣州思邁特軟體Smartbi有限公司(思邁特軟體Smartbi)成立於2011年,致力於為企業客戶提供一站式商業智能解決方案,以提升和挖掘企業客戶的數據價值。

「思邁特軟體Smartbi」是企業級商業智能和大數據分析品牌,經過多年持續自主研發,凝聚大量商業智能最佳實踐經驗,整合了各行業的數據分析和決策支持的功能需求。

報表工具靠不靠譜,來試試Smartbi,思邁特軟體Smartbi經過多年持續自主研發,凝聚大量商業智能最佳實踐經驗,整合了各行業的數據分析和決策支持的功能需求。滿足最終用戶在企業級報表、數據可視化分析、自助探索分析、數據挖掘建模、AI智能分析等大數據分析需求。

思邁特軟體Smartbi個人用戶全功能模塊長期免費試用

馬上免費體驗:Smartbi一站式大數據分析平台

java報表怎麼做?

用我現在用的finereport來和題主說下餅圖吧,它也是web報表工具。

打開報表,設置百分比數據模板

符合餅圖和複合條餅圖只支持百分比的系列分隔方式,因此我們計算每個地區的應付金額所佔比例是多少,隱藏B列,在C1中輸入佔比,C2中輸入公式:=B2/SUM(B2[!0]),B2[!0]是B2擴展出來的所有單元格,根據情況設置單元格樣式等操作。

下面以製作符合餅圖為例,選中圖表,勾線圖表屬性表-樣式系列中的第二繪圖區,將第二繪圖區小於百分比的數據改為10,默認為5,表示第二繪圖區包含所有小於該百分比的值為:如下圖:

根據情況可設置系列標籤樣式,勾選圖表屬性表-樣式標籤中的標籤,選中值,設置格式,百分比保留兩位小數。

修改圖表數據

修改圖表屬性表-數據圖例項值為C2單元格,複合餅圖則可設置完成。

預覽與保存

保存模板,點擊分頁預覽,即可看到效果。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/200931.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-06 11:29
下一篇 2024-12-06 11:29

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論