LoginSignup
0
0

More than 1 year has passed since last update.

「Java」Excelでピボットテーブルを作成する方法

Posted at

Excel のピボットテーブルを使用すると、ユーザーは大量のデータを計算し、分類し、簡潔な表形式にまとめることができるため、報告や 分析がより簡単になります。Excelの最も強力なツールの1つとして、静的なデータを多角的に表示する機能をユーザーに提供します。本記事では、無料のFree Spire.XLS for Javaを使用して、JavaでExcelのピボットテーブルを作成する方法ピボットテーブルのデータを分類する方法、およびピボットテーブルでその他の設定を行う方法について紹介します。

【依存関係の追加】

この方法は、無料のFree Spire.XLS for Javaが必要ですので、先にjarファイルをインポートしてください。

1. Maven

Maven を使用している場合、プロジェクトの pom.xml ファイルに以下のコードを追加することで、簡単にアプリケーションに JAR ファイルをインポートすることができます。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls.free</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>

2. 公式サイトよりJarファイルをダウンロード

まず、Free Spire.XLS for Java の公式サイトよりzipファイルをダウンロードします。zipファイルを解凍し、libフォルダの下にあるSpire.Xls.jarファイルを依存関係としてプロジェクトにインポートしてください。

Excelでピボットテーブルを作成する

以下は、Spire.XLS for Javaを使用して、既存のExcelファイルのデータを基にピボットテーブルを作成する手順です。

  • Workbookクラスのオブジェクトを作成します。
  • Workbook.loadFromFile() メソッドを使用して、Excelファイルを読み込みます。
  • Workbook.getWorksheets().get() メソッドを使用して、指定したワークシートを取得します。
  • Worksheet.getRange().get() メソッドを使用してデータソースの範囲を選択し、Workbook.PivotCaches.add() メソッドを使用して PivotCachesCollection に範囲を追加して PivotCache クラスのオブジェクトを返します。
  • ワークシートにピボットテーブルを追加し、Worksheet.getPivotTables().add() メソッドを使用して場所とキャッシュを設定します。
  • 「地域」と「製品」のフィールドを行の領域にドラッグします。
  • 「購入数」と「購入金額」のフィールドを数値領域に追加します。
  • Workbook.saveToFile() メソッドを使用して、結果ドキュメントを保存します。

Java

import com.spire.xls.*;

public class createPivotTable {

    public static void main(String[] args) {

        //Workbookクラスのオブジェクトを作成する
        Workbook workbook = new Workbook();

        //Excelファイルを読み込む
        workbook.loadFromFile("C:/Sample.xlsx");

        //最初のワークシートを取得する
        Worksheet sheet = workbook.getWorksheets().get(0);

        //データソースの範囲を選択する
        CellRange dataRange = sheet.getRange().get("C1:F11");
        PivotCache cache = workbook.getPivotCaches().add(dataRange);

        //ワークシートにピボットテーブルを追加し、その位置とキャッシュを設定する
        PivotTable pt = sheet.getPivotTables().add("ピボットテーブル", sheet.getRange().get("H3"), cache);

        //「地域」と「製品」フィールドを行領域にドラッグする
        PivotField regionField =(PivotField)pt.getPivotFields().get("地域");
        regionField.setAxis(AxisTypes.Row);
        pt.getOptions().setRowHeaderCaption("地域");
        PivotField productField = (PivotField)pt.getPivotFields().get("製品");
        productField.setAxis(AxisTypes.Row);

        //数値エリアに「購入数」「金額」フィールドを追加する
        pt.getDataFields().add(pt.getPivotFields().get("購入数"), "総購入数", SubtotalTypes.Sum);
        pt.getDataFields().add(pt.getPivotFields().get("金額"), "合計金額", SubtotalTypes.Sum);

        //ピボットテーブルに組み込みのスタイルを適用する
        pt.setBuiltInStyle(PivotBuiltInStyles.PivotStyleMedium11);

        //列の幅を設定する
        sheet.setColumnWidth(8,16);
        sheet.setColumnWidth(9,16);
        sheet.setColumnWidth(10,16);

        //ドキュメントを保存する
        workbook.saveToFile("ピボットテーブルの作成.xlsx", ExcelVersion.Version2016);
    }
}

【結果のExcelワークブック】

Excelでピボットテーブルを作成する

ピボットテーブルを列の値で並べ替える

PivotTable.getPivotFields().get() メソッドを使用して特定のフィールドにアクセスし、PivotField.setSortType() メソッドを使用してその分類型を設定することができます。
次のコード例では、ピボットテーブルを「地域」フィールドの列の値で並べ替える方法を示しています。

Java

import com.spire.xls.*;
import com.spire.xls.core.IPivotDataField;

public class sortPivotTableByRow {

    public static void main(String[] args) {

        //Workbookクラスのオブジェクトを作成する
        Workbook workbook = new Workbook();

        //Excelファイルを読み込む
        workbook.loadFromFile("C:/Sample.xlsx");

        //最初のワークシートを取得する
        Worksheet sheet = workbook.getWorksheets().get(0);

        //データソースの範囲を選択する
        CellRange dataRange = sheet.getRange().get("A1:F11");
        PivotCache cache = workbook.getPivotCaches().add(dataRange);

        //ワークシートにピボットテーブルを追加し、その位置とキャッシュを設定する
        PivotTable pt = sheet.getPivotTables().add("ピボットテーブル", sheet.getRange().get("H3"), cache);

        //「地域」「注文番号」「製品」フィールドを行にドラッグする
        PivotField regionField =(PivotField)pt.getPivotFields().get("地域");
        regionField.setAxis(AxisTypes.Row);
        pt.getOptions().setRowHeaderCaption("地域");

        PivotField idField = (PivotField)pt.getPivotFields().get("注文番号");
        idField.setAxis(AxisTypes.Row);

        PivotField productField = (PivotField)pt.getPivotFields().get("製品");
        productField.setAxis(AxisTypes.Row);

        //数値エリアに「購入数」「金額」フィールドを追加する
        pt.getDataFields().add(pt.getPivotFields().get("購入数"), "総購入数", SubtotalTypes.Sum);
        pt.getDataFields().add(pt.getPivotFields().get("金額"), "合計金額", SubtotalTypes.Sum);

        //ピボットテーブルに組み込みのスタイルを適用する
        pt.setBuiltInStyle(PivotBuiltInStyles.PivotStyleMedium11);

        //データを計算する
        pt.calculateData();

        //「注文番号」フィールドの列のデータを並べ替える
        idField.setSortType(PivotFieldSortType.Descending);

        //列の幅を設定する
        sheet.setColumnWidth(8,16);
        sheet.setColumnWidth(9,16);
        sheet.setColumnWidth(10,16);

        //ドキュメントを保存する
        workbook.saveToFile("データを行で並べ替える.xlsx", ExcelVersion.Version2016);
    }
}

【結果のExcelワークブック】

ピボットテーブルを列の値で並べ替える

ピボットテーブルの行を展開または折りたたむ

特定のピボットテーブルの下にある詳細を折りたたむには、PivotField.hideItemDetail(String, Boolean) メソッドを使用して 2 番目のパラメータを true に設定し、詳細を表示するには、同じメソッドを使用して 2 番目のパラメータを false に設定してください。

Java

import com.spire.xls.*;

public class collapseRows {

    public static void main(String[] args) {

        //Workbookクラスのオブジェクトを作成する
        Workbook workbook = new Workbook();

        //Excelファイルを読み込む
        workbook.loadFromFile("C:/Sample.xlsx");

        //最初のワークシートを取得する
        Worksheet sheet = workbook.getWorksheets().get(0);

        //データソースの範囲を選択する
        CellRange dataRange = sheet.getRange().get("C1:F11");
        PivotCache cache = workbook.getPivotCaches().add(dataRange);

        //ワークシートにピボットテーブルを追加し、その位置とキャッシュを設定する
        PivotTable pt = sheet.getPivotTables().add("ピボットテーブル", sheet.getRange().get("H3"), cache);

        //「地域」と「製品」フィールドを行領域にドラッグする
        PivotField regionField =(PivotField)pt.getPivotFields().get("地域");
        regionField.setAxis(AxisTypes.Row);
        pt.getOptions().setRowHeaderCaption("地域");
        PivotField productField = (PivotField)pt.getPivotFields().get("製品");
        productField.setAxis(AxisTypes.Row);

        //「地域」フィールドの項目詳細情報を非表示にする
        regionField.hideItemDetail("西部地域",true);
        regionField.hideItemDetail("東部地域",true);

        //数値エリアに「購入数」「金額」フィールドを追加する
        pt.getDataFields().add(pt.getPivotFields().get("購入数"), "総購入数", SubtotalTypes.Sum);
        pt.getDataFields().add(pt.getPivotFields().get("金額"), "合計金額", SubtotalTypes.Sum);

        //ピボットテーブルに組み込みのスタイルを適用する
        pt.setBuiltInStyle(PivotBuiltInStyles.PivotStyleMedium11);

        //データを計算する
        pt.calculateData();

        //列の幅を設定する
        sheet.setColumnWidth(8,16);
        sheet.setColumnWidth(9,16);
        sheet.setColumnWidth(10,16);

        //ドキュメントを保存する
        workbook.saveToFile("行の折りたたみ.xlsx", ExcelVersion.Version2016);
    }
}

【結果のExcelワークブック】

ピボットテーブルの行を展開または折りたたむ

ピボットテーブルでその他の設定を行う

ピボットテーブルの表示更新・データソースの更新を行います。

PivotTable.getCache().isRefreshOnLoad(true);

小計を表示します。

PivotTable.isShowSubtotals(true);

データソースを変更します。

PivotTable.changeDataSource();

フィルターを追加します。

PivotReportFilter filter = new PivotReportFilter(String fieldName);
PivotTable.getReportFilters().add(filter);

本記事では、Spire.XLS for Javaを使用してExcelのピボットテーブルを扱う方法について説明します。ピボットテーブルやSpire.XLSについてまだ質問がある場合や、もっと詳しく知りたい場合は、Spire.XLS Forumを参照してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0