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

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

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

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

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

环境准备

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

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

xml 复制代码
<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>

然后导入相关类:

arduino 复制代码
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​](https://link.juejin.cn?target=http%3A%2F%2Fe-iceblue.com "http://e-iceblue.com")​1)

创建 Excel 数据透视表

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

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

完整代码如下:

java 复制代码
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) :用于计算汇总结果。

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

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

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

java 复制代码
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

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

添加多个数据统计字段

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

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

csharp 复制代码
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()​​ 方法保存结果:

typescript 复制代码
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

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

字段名称需要完全匹配

设置字段时:

csharp 复制代码
pivotTable.getPivotFields().get("地区")

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

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

大数据量处理

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

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

总结

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

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

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

相关推荐
用户3126874877201 小时前
JVM 内存结构全链路:堆、栈、方法区、元空间
java
IT枫斗者枫哥1 小时前
Spring Boot导入返回409,为什么第一行还是入库了?
java·spring boot·后端
xiaoqiMikko1 小时前
JVM 线上排查实战(五):升 JDK 17 后进程起不来,十几个老 GC 参数挨个实测(完结)
java·jvm
Flynt1 小时前
Java 27 悄悄改了 3 个默认值,我在 1 核小机器上逐个验证了一遍
java·jvm·性能优化
天天被压力1 小时前
【Python 量化取数指南 #09】Python 拿港股通数据:港股通成交与港股财报实测
java·人工智能·python
吃饱了得干活1 小时前
数据放哪儿:从 HashMap 到一致性哈希
java·后端
SL_staff1 小时前
四维穿透式齐套判断:JVS-APS在制造计划系统中的技术实现
java·spring boot·python
杨杨杨大侠1 小时前
多 Agent 协作到底靠什么?从 Codex 内部机制到 A2A 企业服务
java·人工智能·agent
AI深栈1 小时前
第 17 章 · 编排 AI 流程:StateGraph 节点、条件边与意图路由
java·人工智能