首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >如何使用 Java 创建 Excel 数据透视表

如何使用 Java 创建 Excel 数据透视表

原创
作者头像
用户12416476
发布于 2026-09-24 17:04:54
发布于 2026-09-24 17:04:54
880
举报

在处理 Excel 数据时,原始数据通常以明细表形式保存。例如,一份销售记录可能包含日期、地区、产品、销售数量以及销售金额等信息。

当数据量增加后,直接查看明细数据并不方便。Excel 中的数据透视表(Pivot Table)可以根据已有数据快速完成汇总分析,例如:

  • 按地区统计销售金额;
  • 按产品分类查看销售情况;
  • 对不同字段进行分组统计。

如果需要在 Java 程序中自动生成分析报表,也可以通过代码创建 Excel 数据透视表,避免手动打开 Excel 并重复设置。本文介绍如何使用 Java 创建 Excel 数据透视表,并设置字段完成数据汇总。

环境准备

创建 Java 项目后,通过 Maven 添加 Excel 处理依赖。

在 ​​pom.xml​​ 中添加:

代码语言:javascript
复制
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>

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

然后导入相关类:

代码语言:javascript
复制
import com.spire.xls.*;

准备 Excel 数据

创建数据透视表之前,需要先准备数据源。

例如,有一份销售数据:

日期

地区

产品

销售额

2026-01-01

华东

手机

5000

2026-01-02

华南

笔记本

8000

2026-01-03

华东

平板

3000

2026-01-04

华北

手机

6000

其中:

  • 第一行作为字段名称;
  • 后续行作为数据记录;
  • 数据区域 ​​A1:D5​​ 将作为数据透视表的数据源。

下面的示例首先加载包含销售数据的 Excel 文件,然后根据数据区域创建数据透视表。([​​e-iceblue.com​​][1])

创建 Excel 数据透视表

创建数据透视表主要包含以下步骤:

  1. 加载 Excel 文件;
  2. 获取数据源区域;
  3. 创建 ​​PivotCache​​;
  4. 添加 ​​PivotTable​​;
  5. 设置数据透视表样式;
  6. 保存结果文件。

完整代码如下:

代码语言:javascript
复制
import com.spire.xls.*;

public class CreatePivotTable {

    public static void main(String[] args) {

        // 创建 Workbook 对象
        Workbook workbook = new Workbook();

        // 加载包含销售数据的 Excel 文件
        workbook.loadFromFile("销售数据.xlsx");

        // 获取第一个工作表
        Worksheet sheet = workbook.getWorksheets().get(0);

        // 获取数据源区域
        CellRange dataRange = sheet.getCellRange("A1:D5");

        // 根据数据区域创建数据透视表缓存
        PivotCache cache = workbook.getPivotCaches().add(dataRange);

        // 在指定位置创建数据透视表
        PivotTable pivotTable = sheet.getPivotTables().add("销售统计", sheet.getCellRange("F3"), cache);

        // 设置数据透视表样式
        pivotTable.setBuiltInStyle(PivotBuiltInStyles.PivotStyleMedium10);

        // 保存结果文件
        workbook.saveToFile("创建数据透视表.xlsx", ExcelVersion.Version2016);

        // 释放资源
        workbook.dispose();
    }
}

运行代码后,会在工作表 ​​F3​​ 位置创建一个名为“销售统计”的数据透视表。

不过,此时数据透视表还没有指定统计字段,需要进一步设置行字段和数据字段。

设置数据透视表字段

数据透视表中的字段主要分为:

  • 行字段(Row Field):用于分类显示数据;
  • 数据字段(Data Field):用于计算汇总结果。

例如,希望按照“地区”统计“销售额”,需要:

  • 将“地区”设置为行字段;
  • 将“销售额”添加到数据区域,并使用求和方式统计。

下面的代码完整打开已经创建好的数据透视表,并设置字段:

代码语言:javascript
复制
import com.spire.xls.*;
import com.spire.xls.core.IPivotField;

public class SetPivotFields {

    public static void main(String[] args) {

        // 创建 Workbook 对象
        Workbook workbook = new Workbook();

        // 加载包含数据透视表的 Excel 文件
        workbook.loadFromFile("创建数据透视表.xlsx");

        // 获取工作表
        Worksheet sheet = workbook.getWorksheets().get(0);

        // 获取第一个数据透视表
        PivotTable pivotTable = sheet.getPivotTables().get(0);

        // 获取“地区”字段,并设置为行字段
        IPivotField regionField = pivotTable.getPivotFields().get("地区");
        regionField.setAxis(AxisTypes.Row);

        // 添加“销售额”字段,并进行求和统计
        pivotTable.getDataFields().add(pivotTable.getPivotFields().get("销售额"), "销售额合计", SubtotalTypes.Sum);

        // 保存结果
        workbook.saveToFile("设置字段后的数据透视表.xlsx", ExcelVersion.Version2016);

        // 释放资源
        workbook.dispose();
    }
}

生成后的数据透视表结构类似:

地区

销售额合计

华东

8000

华南

8000

华北

6000

其中,“地区”负责分类,“销售额”负责汇总计算。

添加多个数据统计字段

一个数据透视表可以同时添加多个统计字段。

例如,除了销售额,还需要统计销售数量,可以继续添加字段:

代码语言:javascript
复制
import com.spire.xls.*;
import com.spire.xls.core.IPivotField;

public class AddMultipleDataFields {

    public static void main(String[] args) {

        // 创建 Workbook 对象
        Workbook workbook = new Workbook();

        // 加载包含数据透视表的 Excel 文件
        workbook.loadFromFile("创建数据透视表.xlsx");

        // 获取工作表
        Worksheet sheet = workbook.getWorksheets().get(0);

        // 获取数据透视表
        PivotTable pivotTable = sheet.getPivotTables().get(0);

        // 添加销售额汇总字段
        pivotTable.getDataFields().add(pivotTable.getPivotFields().get("销售额"), "销售额合计", SubtotalTypes.Sum);

        // 添加销售数量汇总字段
        pivotTable.getDataFields().add(pivotTable.getPivotFields().get("销售数量"), "销售数量合计", SubtotalTypes.Sum);

        // 保存文件
        workbook.saveToFile("多字段数据透视表.xlsx", ExcelVersion.Version2016);

        // 释放资源
        workbook.dispose();
    }
}

这样生成的数据透视表中,可以同时查看多个指标。

保存生成的 Excel 文件

完成数据透视表设置后,可以通过 ​​saveToFile()​​ 方法保存结果:

代码语言:javascript
复制
import com.spire.xls.*;

public class SavePivotTable {

    public static void main(String[] args) {

        // 创建 Workbook 对象
        Workbook workbook = new Workbook();

        // 加载 Excel 文件
        workbook.loadFromFile("设置字段后的数据透视表.xlsx");

        // 保存新的 Excel 文件
        workbook.saveToFile("销售分析报表.xlsx", ExcelVersion.Version2016);

        // 释放资源
        workbook.dispose();
    }
}

生成的 Excel 文件可以直接使用 Microsoft Excel 打开,并继续进行筛选或调整。

注意事项

数据源需要包含字段名称

创建数据透视表时,第一行通常需要作为字段标题。

例如:

正确:

地区

产品

销售额

华东

手机

5000

不建议:

A

B

C

华东

手机

5000

字段名称会影响后续字段设置。

字段名称需要完全匹配

设置字段时:

代码语言:javascript
复制
pivotTable.getPivotFields().get("地区")

其中 ​​"地区"​​ 必须与 Excel 数据源中的标题完全一致。

如果名称不匹配,程序无法正确找到对应字段。

大数据量处理

当数据源包含大量记录时:

  • 建议一次性写入数据;
  • 避免频繁修改单元格;
  • 完成操作后及时释放 ​​Workbook​​ 对象。

总结

数据透视表适合对结构化 Excel 数据进行分类、汇总和分析。

通过 Java 创建数据透视表,可以将 Excel 报表生成流程自动化。开发者只需要准备数据源,然后通过代码设置字段和统计方式,即可生成包含汇总结果的 Excel 文件。

这种方式适用于自动生成统计报表、系统导出分析文件等场景。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 环境准备
  • 准备 Excel 数据
  • 创建 Excel 数据透视表
  • 设置数据透视表字段
  • 添加多个数据统计字段
  • 保存生成的 Excel 文件
  • 注意事项
    • 数据源需要包含字段名称
    • 字段名称需要完全匹配
    • 大数据量处理
  • 总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档