java實現(xiàn)定制數(shù)據(jù)透視表的示例詳解
前言
數(shù)據(jù)透視表(Pivot Table)是一種數(shù)據(jù)分析工具,通常用于對大量數(shù)據(jù)進行匯總、分析和展示。它可以幫助用戶從原始數(shù)據(jù)中提取關鍵信息、發(fā)現(xiàn)模式和趨勢,并以可視化的方式呈現(xiàn)。
在數(shù)據(jù)透視表中,數(shù)據(jù)分析師通常希望進行自定義計算。 例如,組合“數(shù)量”和“單價”字段即可獲得“銷售額”。 但是在某些情況中,數(shù)據(jù)分析師需要對一些數(shù)據(jù)進行合并,比如在大區(qū)消費表中,需要把所有”黑龍江“的數(shù)據(jù)、”吉林“的數(shù)據(jù)和”遼寧“的數(shù)據(jù)合并在一起成為“東北“的數(shù)據(jù)。
而數(shù)據(jù)透視表的計算項功能則可以滿足這樣的業(yè)務需求。 因此小編今天為大家介紹的是如何使用Java將計算項添加到數(shù)據(jù)透視表中,具體步驟如下:
- 加載工作簿
- 創(chuàng)建數(shù)據(jù)透視表說
- 將計算項添加到數(shù)據(jù)透視表
- 隱藏重復的名稱項
- 保存工作簿
使用案例
現(xiàn)在某公司的采購經(jīng)理需要基于下圖(消費數(shù)據(jù)表)來分析訂單的狀態(tài),并把除了”完成“之外的狀態(tài)全部歸類為”未完成“,并根據(jù)產(chǎn)品名稱將所有”未完成“的產(chǎn)品金額疊加起來。
步驟一 加載工作簿
將上面的消費數(shù)據(jù)表工作簿加載進來。
Workbook workbook = new Workbook(); workbook.open("SalesData.xlsx");
步驟二 創(chuàng)建數(shù)據(jù)透視表
加載完工作簿之后,接下來為訂單數(shù)據(jù)添加數(shù)據(jù)透視表:
//添加一個sheet IWorksheet pivotSheet = workbook.getWorksheets().add(); pivotSheet.setName("銷售分析"); //添加透視表 IPivotCache pivotCache = workbook.getPivotCaches().create(workbook.getWorksheets().get(0).getRange("A1:G71")); IPivotTable pivotTable = pivotSheet.getPivotTables().add(pivotCache, pivotSheet.getRange("A1")); pivotTable.getPivotFields().get("產(chǎn)品").setOrientation(PivotFieldOrientation.RowField); pivotTable.getPivotFields().get("狀態(tài)").setOrientation(PivotFieldOrientation.RowField); pivotTable.getPivotFields().get("分類").setOrientation(PivotFieldOrientation.ColumnField); pivotTable.getPivotFields().get("金額").setOrientation(PivotFieldOrientation.DataField); pivotTable.getDataFields().get("求和項:金額").setNumberFormat("$#,##0_);($#,##0)");
顯示效果如下所示:按照產(chǎn)品名將所有的消費訂單進行分類。
步驟三 給透視表添加計算項
數(shù)據(jù)透視表準備就緒后,下一步是添加計算項。 通過ICalculatedItems 接口將計算項的集合添加到數(shù)據(jù)透視表字段。 添加名稱和表達式,如下所示:
//基于狀態(tài)字段創(chuàng)建計算項 ICalculatedItems statusCalcItems_lost = pivotTable.getPivotFields().get("狀態(tài)").getCalculatedItems(); //給計算項添加表達式 statusCalcItems_lost.add("未完成", "=失敗+退回+暫停");
此時的數(shù)據(jù)透視表將如下所示:已經(jīng)出現(xiàn)了”未完成“狀態(tài)的訂單。
步驟四 隱藏不需要的項(失敗、退回和暫停)
添加計算項后,需要隱藏與計算項重復的項并避免重復計算:
//隱藏被歸為“未完成”的字段 IPivotItems status = pivotTable.getPivotFields().get("狀態(tài)").getPivotItems(); status.get("失敗").setVisible(false); status.get("退回").setVisible(false); status.get("暫停").setVisible(false);
顯示效果如下:所有的”失敗“、”退會“和”暫停“的數(shù)據(jù)已經(jīng)不見了。
步驟五 保存為Excel
最后,對單元格應用樣式和格式、調整列寬等并保存工作簿。 最終報告如下圖所示:
workbook.Save("數(shù)據(jù)透視表自定義計算.xlsx");
最后的實現(xiàn)效果如下圖所示:
總結
以上就是使用Java給數(shù)據(jù)透視表中添加計算項的具體步驟,除了文中介紹的功能之外,計算項還可以實現(xiàn)下列的功能:
- 計算特定產(chǎn)品的折扣價格
- 計算一個項目與其他項目相比的百分比份額
- 使用備用名稱引用字段項目
到此這篇關于java實現(xiàn)定制數(shù)據(jù)透視表的示例詳解的文章就介紹到這了,更多相關java數(shù)據(jù)透視表內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java8新特性之重復注解(repeating annotations)淺析
這篇文章主要介紹了Java8新特性之重復注解(repeating annotations)淺析,這個新特性只是修改了程序的可讀性,是比較小的一個改動,需要的朋友可以參考下2014-06-06Java中的Gradle與Groovy的區(qū)別及存在的關系
這篇文章主要介紹了Java中的Gradle與Groovy的區(qū)別及存在的關系,Groovy是一種JVM語言,它可以編譯為與Java相同的字節(jié)碼,并且可以與Java類無縫地互操作,Gradle是Java項目中主要的構建系統(tǒng)之一,下文關于兩者的詳細內容,需要的小伙伴可以參考一下2022-02-02