web-dev-qa-db-ja.com

Apache POIを使用してExcelでピボットテーブルを作成する方法はありますか?

私は現在Excelの自動化に取り組んでおり、ApachePOIライブラリをうまく利用していることを追加します。

Excelブックのさまざまな列に大量のデータが保存されているため、ピボットテーブルを作成しようとしています。

POIを使用してピボットテーブルを作成する方法はありますか?

私の要件は、新しいExcelブックまたはデータを格納するのと同じブックにピボットテーブルを作成する必要があることです。

9
SabareeshSS

「クイックガイド」はかなり時代遅れです。

変更ログ はこれを参照します bugzillaの問題 解決済み。

あなたはコードを見ることができます ここ

スニペットは次のとおりです。

 public static void main(String[] args) throws FileNotFoundException, IOException, InvalidFormatException {
        XSSFWorkbook wb = new XSSFWorkbook();
        XSSFSheet sheet = (XSSFSheet) wb.createSheet();

        //Create some data to build the pivot table on
        setCellData(sheet);

        XSSFPivotTable pivotTable = sheet.createPivotTable(new AreaReference("A1:D4"), new CellReference("H5"));
        //Configure the pivot table
        //Use first column as row label
        pivotTable.addRowLabel(0);
        //Sum up the second column
        pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 1);
        //Set the third column as filter
        pivotTable.addColumnLabel(DataConsolidateFunction.AVERAGE, 2);
        //Add filter on forth column
        pivotTable.addReportFilter(3);

        FileOutputStream fileOut = new FileOutputStream("ooxml-pivottable.xlsx");
        wb.write(fileOut);
        fileOut.close();
    }
21
Pureferret

いいえ、できません。参照 ここ

•チャート現在、チャートを作成することはできません。ただし、Excelでグラフを作成し、HSSFを使用してグラフのデータ値を変更し、新しいスプレッドシートを書き出すことはできます。これが可能なのは、POIが既存のレコードを可能な限りそのまま保持しようとするためです。

•マクロマクロは作成できません。ただし、マクロを含むファイルの読み取りと再書き込みは、マクロを安全に保持します。

•ピボットテーブルピボットテーブルの生成はサポートされていません。ピボットテーブルを含むファイルは、安全に読み取りおよび再書き込みできることが報告されています。

1
Hirak