透视表是 Excel 中强大的数据分析工具,它提供了一种灵活的方式来组织、操作和汇总数据,使用户能在不同角度上查看和比较数据,深入研究数据之间的关系和模式。通过透视表,您可以根据不同的标准(如类别、日期或数值)轻松重新排列和汇总数据。当处理复杂数据集时,您可以将不同的数据集放置在透视表中进行比较以便快速地分析并找出差异和优劣势。因此,透视表这个功能在各领域和行业都有广泛的应用。本文将介绍如何使用 Spire.XLS for Java 在 Excel 文档中创建或操作透视表。
安装 Spire.XLS for Java
首先,您需要将 Spire.Xls.jar 文件作为依赖项添加到您的 Java 程序中。可以从此链接下载 JAR 文件。如果您使用 Maven,您可以通过将以下代码添加到项目的 pom.xml 文件中轻松地在应用程序中导入 JAR 文件。
<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>14.8.2</version>
</dependency>
</dependencies>
Java 在 Excel 中创建透视表
要在 Excel 中创建透视表,请按照以下步骤操作:
- 创建一个 Workbook 对象。
- 使用 Workbook.loadFromFile() 方法加载一个现有的 Excel 文档。
- 通过 Workbook.getWorksheets().get(index) 属性获取指定的工作表。
- 使用 Worksheet.getCellRange() 属性指定透视表的单元格数据范围。
- 使用 Workbook.getPivotCaches().add() 方法创建 PivotCache 对象。
- 使用 Worksheet.getPivotTables().add() 方法根据 PivotCache 创建透视表。
- 添加行字段。
- 添加值字段。
- 使用 PivotTable.setBuiltInStyle() 设置内置样式到透视表。
- 使用 Workbook.saveToFile() 方法保存结果文档。
- 使用 Workbook.dispose() 方法释放文档对象。
- Java
import com.spire.xls.*;
public class createPivotTable
{
public static void main(String[] args)
{
// 创建一个Workbook对象
Workbook workbook = new Workbook();
// 加载原Excel文档
workbook.loadFromFile("Data.xlsx");
// 获取第一个工作表
Worksheet sheet = workbook.getWorksheets().get(0);
// 指定透视表的数据范围
CellRange cellRange = sheet.getCellRange("A1:C15");
// 添加CellRange到PivotCaches
PivotCache cache = workbook.getPivotCaches().add(cellRange);
// 通过PivotCaches添加透视表并设置位置
PivotTable pivotTable = sheet.getPivotTables().add("Pivot Table", sheet.getCellRange("E1"), cache);
// 设置透视表的行字段
PivotField regionField = (PivotField)pivotTable.getPivotFields().get("Continent");
regionField.setAxis(AxisTypes.Row);
pivotTable.getOptions().setRowHeaderCaption("Continent");
PivotField productField = (PivotField)pivotTable.getPivotFields().get("Country");
productField.setAxis(AxisTypes.Row);
// 添加值字段
pivotTable.getDataFields().add(pivotTable.getPivotFields().get("Population"), "SUM of Population", SubtotalTypes.Sum);
// 设置透视表的样式
pivotTable.setBuiltInStyle(PivotBuiltInStyles.PivotStyleMedium11);
// 设置透视表相应列的列宽
CellRange h = sheet.getCellRange("E1");
sheet.setColumnWidth(h.getColumn(), 18);
sheet.setColumnWidth(h.getColumn() + 1, 20);
// 保存文件
workbook.saveToFile("结果.xlsx", ExcelVersion.Version2016);
// 释放对象
workbook.dispose();
}
}
Java 按列值对透视表进行排序
在 Java 中,可以通过列值对透视表进行排序。 首先,通过 PivotTable.getPivotFields().get("FieldName") 属性访问特定字段,然后使用 PivotField.setSortType() 设置其排序类型。以下是按照特定字段的值对透视表进行排序的步骤:
- 创建一个 Workbook 对象。
- 使用 Workbook.loadFromFile() 方法加载含有透视表的原Excel文档。
- 通过 Workbook.getWorksheets().get(index) 属性获取特定的工作表。
- 通过 Worksheet.getPivotTables().get(index) 属性从工作表中获取特定的透视表。
- 通过 PivotTable.getPivotFields().get("FieldName") 属性获取特定的字段。
- 通过 PivotField.setSortType() 对该字段中的数据进行排序。
- 使用 Workbook.saveToFile() 方法保存结果文件。
- 使用 Workbook.dispose() 方法释放文档对象
- Java
import com.spire.xls.*;
import com.spire.xls.core.spreadsheet.pivottables.*;
public class sortPivotField
{
public static void main(String[] args) throws Exception
{
// 创建一个Workbook对象
Workbook workbook = new Workbook();
// 加载有透视表的原Excel文档
workbook.loadFromFile("透视表.xlsx");
// 获取第一个工作表
Worksheet sheet = workbook.getWorksheets().get(0);
// 获取第一个透视表
XlsPivotTable pivotTable = (XlsPivotTable)sheet.getPivotTables().get(0);
// 获取要排序的字段
PivotField idField = (PivotField)pivotTable.getPivotFields().get("Continent");
// 按升序排列
idField.setSortType(PivotFieldSortType.Ascending);
// 保存文件
workbook.saveToFile("结果.xlsx", ExcelVersion.Version2016);
// 释放对象
workbook.dispose();
}
}
Java 展开或折叠透视表中的行
在 Java 中展开或折叠数据透视表中的行,使用 PivotField.hideItemDetail (String itemValue, boolean isHiddenDetail) 方法,将第二个参数设置为 true,为折叠效果;设置为 false,为展开效果。详细步骤如下:
- 创建一个 Workbook 对象。
- 使用 Workbook.loadFromFile() 方法加载含有透视表的原 Excel 文档。
- 通过 Workbook.getWorksheets().get(index) 属性获取特定的工作表。
- 通过 Worksheet.getPivotTables().get(index) 属性从工作表中获取特定的透视表。
- 通过 PivotTable.getPivotFields().get("FieldName") 属性获取特定的字段。
- 通过 PivotField.hideItemDetail (String itemValue, boolean isHiddenDetail) 方法针对具体项折叠或展开。
- 使用 Workbook.saveToFile() 方法保存结果文件。
- 使用 Workbook.dispose() 方法释放文档对象
- Java
import com.spire.xls.*;
import com.spire.xls.core.spreadsheet.pivottables.*;
public class hideItemDetail
{
public static void main(String[] args) throws Exception
{
// 创建一个Workbook对象
Workbook workbook = new Workbook();
// 加载有透视表的原Excel文档
workbook.loadFromFile("透视表.xlsx");
// 获取第一个工作表
Worksheet sheet = workbook.getWorksheets().get(0);
// 获取第一个透视表
XlsPivotTable pivotTable = (XlsPivotTable)sheet.getPivotTables().get(0);
// 获取要排序的字段
PivotField idField = (PivotField)pivotTable.getPivotFields().get("Continent");
// 设置展开或折叠
idField.hideItemDetail("South America", true);
idField.hideItemDetail("North America", false);
// 保存文件
workbook.saveToFile("结果.xlsx", ExcelVersion.Version2016);
// 释放对象
workbook.dispose();
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。