Java Excel透视表相关操作实现代码

概述

透视表是依据已有数据源来创建的交互式表格,我们可在excel中创建透视表,也可编辑已有透视表。

所需工具:Free Spire.XLS for Java免费版,编辑代码前,先下载导入jar到Java程序(可手动下载导入,或通过Maven仓库下载导入)。

示例代码

1. 创建透视表

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);

    //为需要汇总和分析的数据创建缓存
    CellRange dataRange = sheet.getCellRange("A1:D10");
    PivotCache cache = wb.getPivotCaches().add(dataRange);

    //使用缓存创建数据透视表,并指定透视表的名称以及在工作表中的位置
    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.刷新Excel透视表

默认情况下,源数据的更改变动不会自动更新到透视表,需要在透视表上进行刷新。

import com.spire.xls.*;

public class RefreshPivotTable {
  public static void main(String[] args) {
    //创建实例,加载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);
   }
  }

透视表更新前后效果:

3.折叠、展开透视表中的行

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();
  }
}

折叠、展开效果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java中excel表数据的批量导入方法

    本文实例为大家分享了Java中excel表数据的批量导入,供大家参考,具体内容如下 首先看下工具类: import java.awt.Color; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.lang.ref

  • Java根据模板导出Excel报表并复制模板生成多个Sheet页

    因为最近用报表导出比较多,所有就提成了一个工具类,本工具类使用的场景为  根据提供的模板来导出Excel报表 并且可根据提供的模板Sheet页进行复制 从而实现多个Sheet页的需求, 使用本工具类时,如果需求是每个Sheet页中的数据都不一致,但是表格样式和模板都一样 那么只需要在实际情况中根据 sql 来查询要添加的数据源 (只需更改数据源即可) 采用的技术为 POI 导出,因为类的缘故,目前只支持2003版本的Excel. 使用前请先下载相应jar包! 后期有时间的话会进行进一步完善,初次

  • Java对Excel表格的上传和下载处理方法

    Excel表格文件的上传和下载,java中涉及到文件肯定会有io流的知识. 而excel文件就要涉及到poi技术,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 这里我是按照正规的项目流程做的案例,所以可能会比网上的一些Demo复杂一些.不过文件的上传和下载基本都是一套固定的流程,只是每个人的实现方式不太相同. 数据库我用的是MySql. 下面是我的项目目录: 按照正常的项目做了分层处理,文件上传的业务我放到了service处理,而文件

  • java基于poi导出excel透视表代码实例

    这篇文章主要介绍了java基于poi导出excel透视表代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从前,我是一个前端程序猿,怀着对打通任(前)督(后)二(开)脉(发)的梦想转了后端,自学两礼拜java+spring全家桶,直接上项目实战.最近接到一需求:将业务数据导出一张透视表. 需求开发完成已近有一段时间了,甲方的大爷大妈,爷爷奶奶们也都用的很开心,我也很开心,于是就心想咱学了也不能白学,所以写下这篇随笔. 先看下用easypo

  • java 如何往已经存在的excel表格里面追加数据的方法

    第一步.导入jar包,两个 poi.jar包  地址在 https://www.jb51.net/softs/542575.html jxl.jar包  地址在  https://www.jb51.net/softs/544392.html 第二步.编写程序 package cn.com.com; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import

  • Java实现生成Excel树形表头完整代码示例

    本文主要分享了Java实现生成Excel树形表头完整代码示例,没有什么好解释的,直接看看代码过程. 源数据格式: String[] targetNames = { "指标名称", "单位", "xx_yy1", "xx_yy2_zz1", "xx_yy2_zz2", "2017年5月_主营业务收入_累计", "2017年5月_主营业务收入_同比", "201

  • Java实现批量导入excel表格数据到数据库中的方法

    本文实例讲述了Java实现批量导入excel表格数据到数据库中的方法.分享给大家供大家参考,具体如下: 1.创建导入抽象类 package com.gcloud.common.excel; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintStream; import java.sql.SQLException;

  • 利用Java实现复制Excel工作表功能

    本文归纳了关于Java如何复制Excel工作表的方法,按不同复制需求,可分为: 1. 复制工作表 1.1 在同一个工作簿内复制工作表 1.2 在不同工作簿间复制工作表 2. 复制指定单元格数据 对于复制方法copy(),这里简单整理了一个表格,其中包含了对数据复制的不同应用需求,可参考使用: 方法 解释 copyFrom(Worksheet worksheet) 复制自源工作表的数据 copy(CellRange sourceRange, CellRange destRange) 复制源数据到目

  • Java Excel透视表相关操作实现代码

    概述 透视表是依据已有数据源来创建的交互式表格,我们可在excel中创建透视表,也可编辑已有透视表. 所需工具:Free Spire.XLS for Java免费版,编辑代码前,先下载导入jar到Java程序(可手动下载导入,或通过Maven仓库下载导入). 示例代码 1. 创建透视表 import com.spire.xls.*; public class CreatePivotTable { public static void main(String[] args) { //加载Excel

  • Java远程共享目录的操作代码

    一.前言 根据客户反馈,在进行文件下载的时候,新增远程共享目录,下载对应的文件到远程共享目录,采用常用的IO操作模式,提示下载成功,但是客户去远程共享目录查看对应的下载文件,反馈说没有找到对应的文件.要求系统需要支持上传远程共享目录,为什么有一个这样的需求?由于下载的文件涉及到了支付文件,里面的金额不允许进行修改,如果放在本地路径有可能会不会出现人为的修改,一般涉及到钱的问题,客户都是比较谨慎的,刚好没有接触过操作远程共享目录的,就google了一下看有没有对应的操作说明,下面简单总结一下. 二

  • Java编程实现调用com操作Word方法实例代码

    实例代码如下: import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import com.jacob.com.Variant; /** * jacob操作MSword类 * @author */ public class WordBean { // word文档 private Dispatch doc; // word运行程序对象 private ActiveXComponent word; //

  • java使用DOM对XML文档进行增删改查操作实例代码

    本文研究的主要是java使用DOM对XML文档进行增删改查操作的相关代码,具体实例如下所示. 源代码: package com.zc.homeWork18; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.tr

  • Java 实现Excel文档添加超链接的代码

    超链接即内容链接,通过给特定对象设置超链接,可实现载体与特定网页.文件.邮件.网络等的链接,点击链接载体可打开链接目标,在文档处理中是一种比较常用的功能.本文将介绍通过Java程序给Excel文档添加超链接的方法,这里支持添加多种不同类型的链接,如URL网页链接.Workbook工作簿链接.File文档链接.Unc网络路径链接等. 使用工具:Free Spire.XLS for Java (免费版) 注:通过官网下载包,并解压将lib文件夹下的jar文件导入java程序.如下导入效果: Java

  • java使用FFmpeg合成视频和音频并获取视频中的音频等操作(实例代码详解)

    FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序. ffmpeg命令参数如下: 通用选项 -L license -h 帮助 -fromats 显示可用的格式,编解码的,协议的... -f fmt 强迫采用格式fmt -I filename 输入文件 -y 覆盖输出文件 -t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持 -ss position 搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持 -title

  • JAVA 实现磁盘文件加解密操作的示例代码

    简单实现了下: import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import java.io.*; import java.security.GeneralSecurityException; import java.security.SecureRandom; /** * 文件

  • Java实现Excel文件加密解密的示例代码

    目录 概述 示例大纲 工具 Java代码示例 示例1加密工作簿 示例2解密工作簿 示例3加密工作表 示例4加密工作表指定数据范围 示例5设置工作表公式隐藏 示例6解密Excel工作表 概述 设置excel文件保护时,通常可选择对整个工作簿进行加密保护,打开文件时需要输入密码:或者对指定工作表进行加密,即设置表格内容只读,无法对工作表进行编辑.另外,也可以对工作表特定区域设置保护,即设置指定区域可编辑或者隐藏数据公式,保护数据信息来源.无需设置文档保护时,可撤销密码保护,即解密文档.下面,将通过j

  • Java实现经典游戏超级玛丽的示例代码

    目录 前言 主要设计 功能截图 代码实现 游戏主界面 马里奥 小怪 总结 前言 在你的童年记忆里,是否有一个蹦跳.顶蘑菇的小人? 如果你回忆起了它,你定然会觉得现在它幼稚.无聊,画面不漂亮,游戏不精彩……但请你记住:这才是真正的游戏,它给了你无限的欢乐! 马里奥是靠吃蘑菇成长,闻名世界的超级巨星.特征是大鼻子.头戴帽子.身穿背带工作服.还留着胡子. 如此经典的游戏,你怎么能错过,快来玩玩吧. <超级玛丽>游戏是用java语言实现,采用了swing技术进行了界面化处理,设计思路用了面向对象思想.

随机推荐