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

这篇文章主要介绍了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(); } }折叠、展开效果

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...