最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java創(chuàng)建Excel數據透視表(Pivot?Table)的完整實戰(zhàn)教程

 更新時間:2026年03月19日 11:26:35   作者:缺點內向  
在日常的數據分析開發(fā)中,我們經常需要對大量原始數據進行匯總、分類和統計,本文將介紹如何在?Java?中創(chuàng)建?Excel?數據透視表,并給出一個實用示例,有需要的小伙伴可以了解下

在日常的數據分析開發(fā)中,我們經常需要對大量原始數據進行匯總、分類和統計。相比手動操作 Excel,使用代碼自動生成數據透視表(Pivot Table)不僅效率更高,還能很好地融入后端系統或數據處理流程。本文將介紹如何在 Java 中創(chuàng)建 Excel 數據透視表,并給出一個實用示例。

為什么使用代碼創(chuàng)建數據透視表

在實際項目中,數據通常來源于數據庫或接口。如果每次都手動打開 Excel 再創(chuàng)建透視表,不僅耗時,還容易出錯。通過 Java 自動生成數據透視表,可以實現:

  • 自動化報表生成
  • 提高數據處理效率
  • 保證結果一致性
  • 便于集成到現有系統

準備工作

本文示例基于 Spire.XLS for Java 實現。它提供了對 Excel 文件的完整操作能力,包括創(chuàng)建工作簿、編輯數據、生成圖表以及數據透視表等功能。

你可以通過 Maven 引入依賴:

<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.xls</artifactId>
    <version>13.8.0</version>
</dependency>

示例:創(chuàng)建數據透視表

下面通過一個簡單示例,演示如何從已有數據創(chuàng)建數據透視表。

1. 準備數據

假設我們有如下結構的數據:

RegionProductSales
EastA100
WestB200
EastB150
WestA120

2. Java 實現代碼

import com.spire.xls.*;

public class CreatePivotTable {
    public static void main(String[] args) {
        
        Workbook workbook = new Workbook();
        Worksheet sheet = workbook.getWorksheets().get(0);
        
        // 寫入數據
        sheet.getCellRange("A1").setText("Region");
        sheet.getCellRange("B1").setText("Product");
        sheet.getCellRange("C1").setText("Sales");
        
        Object[][] data = {
                {"East", "A", 100}, {"West", "B", 200},
                {"East", "B", 150}, {"West", "A", 120}
        };
        
        for (int i = 0; i < data.length; i++) {
            sheet.getCellRange(i + 2, 1).setText((String)data[i][0]);
            sheet.getCellRange(i + 2, 2).setText((String)data[i][1]);
            sheet.getCellRange(i + 2, 3).setNumberValue((Integer)data[i][2]);
        }
        
        // 創(chuàng)建透視表
        Worksheet pivotSheet = workbook.getWorksheets().add("PivotTable");
        CellRange dataRange = sheet.getCellRange("A1:C" + (data.length + 1));
        PivotCache cache = workbook.getPivotCaches().add(dataRange);
        
        PivotTable pivotTable = pivotSheet.getPivotTables().add(
                "PivotTable", pivotSheet.getCellRange("A3"), cache
        );
        
        // 設置字段
        pivotTable.getPivotFields().get("Region").setAxis(AxisTypes.Row);
        pivotTable.getPivotFields().get("Product").setAxis(AxisTypes.Column);
        pivotTable.getDataFields().add(
            pivotTable.getPivotFields().get("Sales"), 
            "Total Sales", 
            SubtotalTypes.Sum
        );
        
        workbook.saveToFile("SalesPivotTable.xlsx", ExcelVersion.Version2016);
        System.out.println("完成!");
    }
}

代碼說明

上述代碼主要分為幾個關鍵步驟:

  • 創(chuàng)建并填充原始數據
  • 定義數據區(qū)域作為透視表的數據源
  • 創(chuàng)建 PivotCache(用于緩存數據)
  • 在新工作表中創(chuàng)建 PivotTable
  • 配置行、列和數據字段
  • 設置匯總方式(如 Sum)

理解這幾個步驟之后,你就可以根據實際業(yè)務自由調整透視表結構,比如增加篩選字段、修改統計方式(平均值、計數等)等。

運行效果

程序運行后,會生成一個 Excel 文件,并在新工作表中創(chuàng)建數據透視表,實現按 Region 分組行、按 Product 分組列,并對 Sales 進行匯總統計。

方法補充

1.Java 創(chuàng)建 Excel 數據透視表

Jar包準備:需要Excel類庫工具?Free Spire.XLS for Java,作者使用的是免費版。可去官網下載Jar包后解壓,將解壓后lib文件夾下的Spire.Xls.jar手動導入到Java程序;或者通過Maven倉庫下載導入。

JAVA程序代碼如下

import com.spire.xls.*;
public class CreatePivotTable {
public static void main(String[] args) {
//加載Excel測試文檔
Workbook wb = new Workbook();
wb.loadFromFile("test.xlsx");
//獲取第一個的工作表
Worksheet sheet = wb.getWorksheets().get(0);
//為需要匯總和分析的數據創(chuàng)建緩存
CellRange dataRange = sheet.getCellRange("A1:D10");
PivotCache cache = wb.getPivotCaches().add(dataRange);
//使用緩存創(chuàng)建數據透視表,并指定透視表的名稱以及在工作表中的位置
PivotTable pt = sheet.getPivotTables().add("PivotTable",sheet.getCellRange("A12"),cache);
//添加行字段1
PivotField pf1 = null;
if (pt.getPivotFields().get("月份") instanceof PivotField){
pf1 = (PivotField) pt.getPivotFields().get("月份");
}
pf1.setAxis(AxisTypes.Row);
//添加行字段2
PivotField pf2 = null;
if (pt.getPivotFields().get("廠商") instanceof PivotField){
pf2 = (PivotField) pt.getPivotFields().get("廠商");
}
pf2.setAxis(AxisTypes.Row);
//設置行字段的標題
pt.getOptions().setRowHeaderCaption("月份");
//添加列字段
PivotField pf3 = null;
if (pt.getPivotFields().get("產品") instanceof PivotField){
pf3 = (PivotField) pt.getPivotFields().get("產品");
}
pf3.setAxis(AxisTypes.Column);
//設置列字段標題
pt.getOptions().setColumnHeaderCaption("產品");
//添加值字段
pt.getDataFields().add(pt.getPivotFields().get("總產量"),"求和項:總產量",SubtotalTypes.Sum);
//設置透視表樣式
pt.setBuiltInStyle(PivotBuiltInStyles.PivotStyleDark12);
//保存文檔
wb.saveToFile("數據透視表.xlsx", ExcelVersion.Version2013);
wb.dispose();
}
}

2. Java創(chuàng)建/刷新Excel透視表

創(chuàng)建透視表

import com.spire.xls.*;
 public class CreatePivotTable {
     public static void main(String[] args) {
         //加載Excel測試文檔
         Workbook wb = new Workbook();
         wb.loadFromFile("test.xlsx");
         //獲取第一個的工作表
         Worksheet sheet = wb.getWorksheets().get(0);
         //為需要匯總和分析的數據創(chuàng)建緩存
         CellRange dataRange = sheet.getCellRange("A1:D10");
         PivotCache cache = wb.getPivotCaches().add(dataRange);
         //使用緩存創(chuàng)建數據透視表,并指定透視表的名稱以及在工作表中的位置
         PivotTable pt = sheet.getPivotTables().add("PivotTable",sheet.getCellRange("A12"),cache);
         //添加行字段1
         PivotField pf1 = null;
         if (pt.getPivotFields().get("月份") instanceof PivotField){
             pf1 = (PivotField) pt.getPivotFields().get("月份");
         }
         pf1.setAxis(AxisTypes.Row);
         //添加行字段2
         PivotField pf2 = null;
         if (pt.getPivotFields().get("廠商") instanceof PivotField){
             pf2 = (PivotField) pt.getPivotFields().get("廠商");
         }
         pf2.setAxis(AxisTypes.Row);
         //設置行字段的標題
         pt.getOptions().setRowHeaderCaption("月份");
         //添加列字段
         PivotField pf3 = null;
         if (pt.getPivotFields().get("產品") instanceof PivotField){
             pf3 = (PivotField) pt.getPivotFields().get("產品");
         }
         pf3.setAxis(AxisTypes.Column);
         //設置列字段標題
         pt.getOptions().setColumnHeaderCaption("產品");
         //添加值字段
         pt.getDataFields().add(pt.getPivotFields().get("總產量"),"求和項:總產量",SubtotalTypes.Sum);
         //設置透視表樣式
         pt.setBuiltInStyle(PivotBuiltInStyles.PivotStyleDark12);
         //保存文檔
         wb.saveToFile("數據透視表.xlsx", ExcelVersion.Version2013);
         wb.dispose();
     }
 }

刷新透視表

import com.spire.xls.*;
 public class RefreshPivotTable {
     public static void main(String[] args) {
         //創(chuàng)建實例,加載Excel
         Workbook wb = new Workbook();
         wb.loadFromFile("數據透視表.xlsx");
         //獲取第一個工作表
         Worksheet sheet = wb.getWorksheets().get(0);
         //更改透視表的數據源數據
         sheet.getCellRange("C2:C4").setText("產品A");
         sheet.getCellRange("C5:C7").setText("產品B");
         sheet.getCellRange("C8:C10").setText("產品C");
         //獲取透視表,刷新數據
         PivotTable pivotTable = (PivotTable) sheet.getPivotTables().get(0);
         pivotTable.getCache().isRefreshOnLoad();
         //保存文檔
         wb.saveToFile("刷新透視表.xlsx",FileFormat.Version2013);
     }
 }

折疊、展開透視表中的行

import com.spire.xls.*;
 import com.spire.xls.core.spreadsheet.pivottables.XlsPivotTable;
 public class ExpandRows {
     public static void main(String[] args) {
         //加載包含透視表的Excel
         Workbook wb = new Workbook();
         wb.loadFromFile("數據透視表.xlsx");
         //獲取數據透視表
         XlsPivotTable pivotTable = (XlsPivotTable) wb.getWorksheets().get(0).getPivotTables().get(0);
         //計算數據
         pivotTable.calculateData();
         //展開”月份”字段下“2”的詳細信息
         PivotField field = (PivotField) pivotTable.getPivotFields().get("月份");
         field.hideItemDetail("2",false);
         //折疊”月份”字段下“3”的詳細信息
         PivotField field1 = (PivotField) pivotTable.getPivotFields().get("月份");
         field1.hideItemDetail("3",true);
         //保存并打開文檔
         wb.saveToFile("展開、折疊行.xlsx", ExcelVersion.Version2013);
         wb.dispose();
     }
 }

小結

通過 Java 自動創(chuàng)建數據透視表,可以顯著提升數據處理效率,尤其適用于報表系統或批量數據分析場景。整個過程的核心在于數據源的定義以及透視表字段的配置。

在實際項目中,你可以將這一流程與數據庫查詢、定時任務等結合,實現完全自動化的數據分析輸出。

到此這篇關于Java創(chuàng)建Excel數據透視表(Pivot Table)的完整實戰(zhàn)教程的文章就介紹到這了,更多相關Java創(chuàng)建Excel數據透視表內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Echarts+SpringMvc顯示后臺實時數據

    Echarts+SpringMvc顯示后臺實時數據

    這篇文章主要為大家詳細介紹了Echarts+SpringMvc顯示后臺實時數據,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Java原生序列化和反序列化代碼實例

    Java原生序列化和反序列化代碼實例

    這篇文章主要介紹了Java原生序列化和反序列化代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • SpringBoot+MySQL實現讀寫分離的多種具體方案

    SpringBoot+MySQL實現讀寫分離的多種具體方案

    在高并發(fā)和大數據量的場景下,數據庫成為了系統的瓶頸。為了提高數據庫的處理能力和性能,讀寫分離成為了一種常用的解決方案,本文將介紹在Spring?Boot項目中實現MySQL數據庫讀寫分離的多種具體方案,需要的朋友可以參考下
    2023-06-06
  • Java深入學習圖形用戶界面GUI之創(chuàng)建窗體

    Java深入學習圖形用戶界面GUI之創(chuàng)建窗體

    圖形編程中,窗口是一個重要的概念,窗口其實是一個矩形框,應用程序可以使用其從而達到輸出結果和接受用戶輸入的效果,學習了GUI就讓我們用它來創(chuàng)建一個窗體
    2022-05-05
  • Spring Boot集成Druid出現異常報錯的原因及解決

    Spring Boot集成Druid出現異常報錯的原因及解決

    Druid 可以很好的監(jiān)控 DB 池連接和 SQL 的執(zhí)行情況,天生就是針對監(jiān)控而生的 DB 連接池。本文講述了Spring Boot集成Druid項目中discard long time none received connection異常的解決方法,出現此問題的同學可以參考下
    2021-05-05
  • mybatis中嵌套查詢的使用解讀

    mybatis中嵌套查詢的使用解讀

    這篇文章主要介紹了mybatis中嵌套查詢的使用解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java全面細致講解類與對象

    Java全面細致講解類與對象

    類和對象是兩種以計算機為載體的計算機語言的合稱。對象是對客觀事物的抽象,類是對對象的抽象。類是一種抽象的數據類型;變量就是可以變化的量,存儲在內存中—個可以擁有在某個范圍內的可變存儲區(qū)域
    2022-05-05
  • Springboot中Controller和RestController的使用及區(qū)別

    Springboot中Controller和RestController的使用及區(qū)別

    文章總結了Spring框架中@Controller和@RestController的區(qū)別,包括它們的用途、工作機制、使用場景以及底層原理,文章指出,@Controller用于傳統的SpringMVC應用,返回視圖或數據(需@ResponseBody)
    2025-11-11
  • java實現變更文件查詢的方法

    java實現變更文件查詢的方法

    這篇文章主要介紹了java實現變更文件查詢的方法,可通過java查詢文件最后修改時間的方法實現查找變更文件的功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Java?ArrayList集合之解鎖數據存儲新姿勢

    Java?ArrayList集合之解鎖數據存儲新姿勢

    這篇文章主要介紹了Java?ArrayList集合之解鎖數據存儲新姿勢,ArrayList是一個動態(tài)數組,可以自動調整大小,并提供了豐富的操作方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-03-03

最新評論

松江区| 淅川县| 贵德县| 贡觉县| 莫力| 黑龙江省| 龙胜| 偏关县| 大方县| 调兵山市| 泾源县| 杭州市| 马山县| 铜川市| 九龙坡区| 延津县| 定远县| 铜鼓县| 大悟县| 从化市| 万年县| 邵东县| 罗定市| 昭觉县| 兰溪市| 浮山县| 长顺县| 清远市| 英山县| 肥乡县| 浦北县| 阿城市| 仁怀市| 布尔津县| 霍州市| 板桥市| 叶城县| 东至县| 承德市| 湘乡市| 龙川县|