web-dev-qa-db-ja.com

ApachePOIを使用してExcelチャートを作成する

Apache POIライブラリを使用して、棒グラフ、折れ線グラフなどのグラフを含むJavaコードからExcelシートを作成する必要があります。可能ですか?の有用なコード例を見つけることができません。同じ。

Java用のPOIライブラリ以外にこれに代わるものはありますか?

16
javdev

Excelテンプレートを使用して、POIでグラフを保存することしかできません。つまり、グラフを含むExcelテンプレートファイルを作成し、グラフのデータソースを1つのdefinedNameにリンクすると、POIからテンプレートファイルを読み込み、コードを使用してdefinedNameを変更できます。現在のPOIは、ゼロからチャートを作成することをサポートしていません。

17
liya

Poi-3.8ではチャートのサポートが来るようです。

このディスカッション を参照してください。

そして特に、

6
prule

Java用のPOIライブラリ以外にこれに代わるものはありますか?

他にもいくつかのライブラリがありますが、チャートのようなものを書けるかどうかはわかりません。

新しいバージョンのOffice(XMLベースのフォーマットファイルを使用するバージョン)を使用できる場合は、別のアプローチを使用できます。

  • 必要なグラフといくつかのダミーデータを含む、新しいバージョンのOfficeを使用してExcelファイルを作成します。
  • そのExcelファイルを解凍し、XMLファイルを内部から抽出します。最も重要なのは、ファイルxl\worksheets\sheet1.xml xl\worksheets\sheet2.xmlまたはxl\worksheets\sheet3.xml(使用したシートに応じて異なります)です。
  • ファイル形式を見てみましょう(POIを使用するよりも複雑です)が、以前に入力した「ダミー」データを特定することはそれほど難しくありません。
  • VelocityまたはFreeMarkerを使用して、そのxmlファイルをテンプレートに変換します(ダミーデータを変数とマクロに置き換えて、同じ結果を生成します)
  • 実際のデータを取得し、テンプレートとマージし、すべてをZipにパックしますが、*。xlsx拡張子を付ける小さなプログラム(数行)を作成します。

上記の手順は少し複雑に見えますが、複雑なExcelファイルがない場合は、見た目よりも簡単です。

4
Adrian A.

スレッドは古く見えますが、あなたがすでに方法を見つけているのか、それともまだ探しているのかはわかりません。

しかし、これが私がすることです。 JFreeChart という無料のライブラリがあります。これを使用してJPGまたはPNGファイルを生成し、ApachePOIで作成するときにExcelファイルに挿入できます。

ただし、この方法の欠点は、Excelの場合のように、スプレッドシートのデータを変更してもグラフのデータが動的に変更されないことです。今、それは私が住むことができないものです。

それで、私は今、いくつかの研究をするつもりです。質問があったので、ApachePOIまたは別のエレガントな方法で機能を追加する必要があると確信しています。発見した場合は、必ずここに私の発見を投稿します。

----更新----

約1時間続く私の研究では、SmartXLSと呼ばれる適切なライブラリを1つしか見つけることができませんでした(グーグルしてください、私は初心者であり、スパム防止メカニズムが起動したため、リンクを投稿できませんでしたin)それは私が使用するものにかなり近いです。プログラムを使用して、Excelとグラフの両方を生成できます。ウェブサイトはとてもシンプルで、ライセンス情報が見つからなかったので、個人的および商用利用は無料だと思います。ライブラリは問題なくダウンロードできました。まだ使っていません。試してみて、どのように機能するかをお知らせください。

2

これが 実例 です。

  • JSONのデータと、マクロを含む.xlsmテンプレートファイルがあります。 -Excelではグラフ、データ、範囲名は不要

  • グラフ付きのシートを作成する必要があるたびにテンプレートシートのクローンを作成し、必要なグラフタイプをz1に配置し、挿入されたデフォルトの折れ線グラフを適切なグラフタイプに変更します。複数実行を回避するために、z1からチャートタイプを削除します。

それが役に立てば幸い。

1
Sumant

グラフを作成するためにExcelファイルに何を入れる必要があるかを理解する必要があるため、これを最初から行うのは非常に複雑になります。私は別のルートに行きます。

一部のデータの棒グラフなどを作成するマクロを含むExcelファイルを作成します(通常の方法でExcelを使用)。次に、Apache POIを使用して必要なデータを含むファイルを作成し、JavaからExcelを起動して、グラフを作成するマクロを実行します。

1
DJClayworth