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. 刷新透视表

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

}

}

折叠、展开效果:

Java 创建、刷新Excel透视表/设置透视表行折叠、展开相关教程

java刷新透视表数据源,Java 创建、刷新Excel透视表/设置透视表行折叠、展开相关推荐

  1. mysql给用户建表权限_创建MySQL用户 赋予某指定库表的权限

    摘自: http://renxiangzyq.iteye.com/blog/763837 update ERROR 1364 (HY000): Field 'ssl_cipher' doesn't h ...

  2. java工作流 表设计_创建activiti工作流所需23张表

    Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度. Activiti的创始人也就是JBPM(也是一个优秀的BPM引擎)的创始人, ...

  3. 【Excle数据透视表】如何创建非共享缓存的数据透视表

    一般情况下,利用同一个数据源创建多个数据表时,默认创建的是共享缓存的数据透视表.刷新一个数据透视表时会影响其他数据透视表的展示结果. 解决方案 创建非共享缓存的多个数据透视表 步骤一 单击工作表数据任 ...

  4. 使用java通过固定的excel模板自动生成数据库表的ddl建表语句

    有时候要建很多表或一个表有很多字段,一个个复制字段弄太麻烦了,为了提高点工作效率,写了个小工具通过固定的excel模板自动生成基础的ddl建表语句 maven依赖 <!--核心jar包--> ...

  5. sqlalchemy根据表名动态创建model类

    sqlalchemy根据表名动态创建model类 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/J_Object/article/details/8 ...

  6. NC57中间表数据源的设置流程

    目前场景如下: NC定时将数据写入中间库中,第三方去中间库中抓取: 方式一: 第一步:在NC客户端[客户化]--[二次开发工具]--[参数设置]--[参数模板管理]添加所设置的数据源数据 找到对应的数 ...

  7. 创建表的时候创建索引

    创建索引是指在某个表的一列或多列上建立一个索引,以便提高对表的访问速度.创建索引有3种方式,这3种方式分别是创建表的时候创建索引.在已经存在的表上创建索引和使用ALTER TABLE语句来创建索引.本 ...

  8. 超过一天的文件_一键合并多个excel文件至同一工作表!

    问题 小文是一个文艺青年,她从豆瓣上收集了很多种书籍的信息,并将书籍信息按照书籍分类创建了很多个excel文件,有一天,她突然想把这些不同分类的excel文件合并到一个工作表里,那么问题来了,如何快速 ...

  9. java excel 展开折叠_Java 创建、刷新Excel透视表/设置透视表行折叠、展开

    透视表是依据已有数据源来创建的交互式表格,我们可在excel中创建透视表,也可编辑已有透视表.本文以创建透视表.刷新透视表以及设置透视表的行展开或折叠为例,介绍具体的操作方法. 所需工具:Free S ...

最新文章

  1. 微信小程序获取openid和session_key并且把openid存入数据库
  2. 修订版 | 目标检测:速度和准确性比较(Faster R-CNN,R-FCN,SSD,FPN,RetinaNet和YOLOv3)...
  3. C++11:using 的各种作用
  4. linux命令学习记录一
  5. 微信小程序 开发过程中遇到的坑(一)
  6. 北京Dotnet分享会 || 精英论坛第三期
  7. 安卓超过两行就加省略号_基础标点符号使用规则详解—8.省略号
  8. 惯性积计算实例_关于材料力学中惯性矩的认识00
  9. Unity3D研究院之手游开发中所有特殊的文件夹(转)
  10. 胡寿松《自动控制原理》课后习题重点题与考研刷题指南(ch1-4)
  11. 提升效率之串口监控工具
  12. 电脑丢失dll文件能一键修复吗,哪种修复方法靠谱?
  13. 五胡十六国、东晋南北朝这280年历史,你知道多少?5000字带你看个清楚明白
  14. 可视化神器Plotly玩转直方图
  15. UOJ220 [NOI2016] 网格 【割顶】【并查集】
  16. Jmeter 脚本中使用base64 加解密、MD5加密
  17. 关于Bellman-Ford算法的个人理解
  18. 关于java导出Excel 并设置密码权限
  19. MATLAB app 实现音乐播放器
  20. mysql 4.0.18_DBD:MySQL-4.018的安装问题

热门文章

  1. 为什么要有backup
  2. 2021美赛MCM\ICM E题
  3. 阿里菜鸟招聘java和客户端开发
  4. 曼哈顿距离和欧氏距离
  5. java中.next()方法的作用及应用?
  6. (算法)通俗易懂的字符串匹配KMP算法及求next值算法
  7. 【英文】阅读句子理解小妙招 that/which从句到底修饰谁?
  8. 【CS224n】(lecture9)Transformer的变体
  9. apicloud微信登录
  10. 双屏切换单屏,之前在另一显示器显示的软件窗口现无法显示解决方法