AS-Report for Javaでは、テンプレートExcelファイルに配置されたグラフの情報を取得する機能(※xlsx形式のみ対応)があります。これにより、取得したグラフの情報から、サードパーティー製のライブラリ等を使用してグラフイメージを生成し、プレビュー、印刷、PDFファイルにグラフイメージを追加することが可能です。
この記事では、プレビュー、印刷、PDFファイルにグラフを追加する方法について解説していきます。
※AS-Report for Javaではグラフ情報の取得及び、プレビュー、印刷、PDFファイルへのグラフイメージの挿入機能についてのみ提供、サポートします。このため、サードパーティー製のライブラリ等を使用したグラフイメージの生成はユーザー独自に実装して頂く必要があります。
なお、JFreeChartを使用したグラフイメージ生成クラスのサンプル(ChartCreator.java)を製品に収録しております。
- 環境
- 使用するテンプレートExcelファイル
- 動的 Web プロジェクトの作成
- AS-Reportの使用準備
- JFreeChartの使用準備
- テンプレートExcelファイルの格納
- グラフイメージを追加した帳票の作成
- プロジェクトの実行
- 印刷、PDFファイルの出力
- 対応するグラフの種類
- さいごに
環境
使用するテンプレートExcelファイル
今回は、以下のようなExcelファイルを用意しました。

動的 Web プロジェクトの作成
初めに動的 Web プロジェクトを作成していきます。
Eclispeを起動し、上部メニューの[ファイル] > [新規] > [動的 Web プロジェクト]を選択し、
[新規動的 Web プロジェクト]ウインドウを開きます。

プロジェクト名:asrjsample
ターゲット・ランタイム:Tomcat8 (Java8)

サーブレットの作成
上部メニューの[ファイル] > [新規] > [その他]を選択しウィザードを開き、[Web] > [サーブレット]を選択して右下の[次へ]をクリックします。

クラス名:GraphServlet


JSP ファイルの作成
上部メニューの[ファイル] > [新規] > [その他]を選択しウィザードを開き、[Web] > [JSP ファイル]を選択して右下の[次へ]をクリックします。

[WEB-INF]フォルダを選択し、ファイル名を"index.jsp"に設定して右下の完了をクリックします。

index.jspファイルが作成されます。

AS-Reportの使用準備
jarファイルの追加
以下のようにlibフォルダにAS-Report for Javaのjarファイルを格納します。
なお、jarファイルは下記から取得してください。
"AS-Report for Javaインストール先フォルダ\AS-ReportJ\bin\asreport-1.X.X.jar"

AS-Report for Java体験版はこちら(無償)
スクリプトファイルの追加
webappフォルダ配下にAS-Report for Javaのスクリプトファイルを配置します。
なお、スクリプトファイルは下記から取得してください。
"AS-Report for Javaインストール先フォルダ\AS-ReportJ\bin\Scripts"

JFreeChartの使用準備
今回はJFreeChartを使用してグラフイメージを生成するのでJFreeChartのjarファイルもlibフォルダに格納します。
なお、下記の製品フォルダにJFreeChartのjarファイルが格納されています。
"AS-Report for Javaインストール先フォルダ\AS-ReportJ\samples\web\standard\WebContent\WEB-INF\lib\jcommon-1.0.23.jar"
"AS-Report for Javaインストール先フォルダ\AS-ReportJ\samples\web\standard\WebContent\WEB-INF\lib\jfreechart-1.0.19.jar"

テンプレートExcelファイルの格納
WEB-INFフォルダ配下にdataフォルダを作成し、テンプレートExcelファイルを格納します。

グラフイメージを追加した帳票の作成
グラフイメージを挿入した帳票作成のコードを実装していきます。
グラフイメージの生成について
グラフイメージの生成はユーザー独自に実装して頂く必要がありますが、下記の製品フォルダにJFreeChartを使用したグラフイメージ生成クラス(ChartCreator.java)のサンプルが格納されているため、今回はそちらを使用します。
"AS-Report for Javaインストール先フォルダ\AS-ReportJ\samples\web\standard\src\model\ChartCreator.java"
ChartCreator.javaをプロジェクトに追加します。


index.jspへコードの実装
index.jspへコードを実装します。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>AS-Report for Java Sample</title> <script type="text/javascript" src="<%=request.getContextPath()%>/Scripts/jquery-3.7.1.min.js"></script> <script type="text/javascript" src="<%=request.getContextPath()%>/Scripts/gunzip.min.js"></script> <script type="text/javascript" src="<%=request.getContextPath()%>/Scripts/asreport.viewer.1.0.0.js"></script> </head> <body> <!--帳票ドキュメント格納用の DIV 要素(id="documentcontainer")を用意。スクリプトレットで帳票ドキュメントを挿入--> <div id="documentcontainer" style="display: none;"> <%=(String) request.getAttribute("svgzdocument")%> </div> <!--ビューア配置用の DIV 要素(id="viewercontainer")を用意。width、height でサイズ指定--> <div id="viewercontainer" style="width: 100%; height: 850px;"></div> <!--ビューアの表示とプレビュー実行--> <script type="text/javascript"> $(function() { // ビューアを id 名 [viewercontainer] の DIV 要素に表示 viewer = new CellReport.Viewer('viewercontainer'); // id 名 [documentcontainer] の DIV 要素に格納された帳票ドキュメントを読み込む viewer.report('documentcontainer'); }); </script> </body> </html>
GraphServlet.javaへコードの実装
GraphServlet.javaへコードを実装します。

import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jp.co.adv.asreport.CellReport; import jp.co.adv.asreport.enums.SvgSaveType; import jp.co.adv.xl.chart.ChartData; /** * Servlet implementation class GraphServlet */ @WebServlet("/GraphServlet") public class GraphServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public GraphServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { CellReport cellReport = new CellReport(); ServletContext context = this.getServletContext(); cellReport.setFileName(context.getRealPath("/WEB-INF/data/Template.xlsx")); cellReport.getReport().start(); cellReport.getReport().file(); cellReport.getPage().start("グラフ", "1-9999"); // 設定されたグラフの数を取得します。 int chartCount = cellReport.getChartCount(); for (int i = 0; i < chartCount; i++) { // グラフ情報を取得します。 ChartData chartData = cellReport.getChartData(i); ChartCreator chartCreator = new ChartCreator(); // B8 セルに作成したチャートイメージを設定します。 cellReport.getCell("B8").getCanvas().addChart(chartCreator.getChartImage(chartData), chartData); } cellReport.getPage().end(); cellReport.getReport().end(); request.setAttribute("svgzdocument", cellReport.getReport().getSvgz(SvgSaveType.IncludeExcelPdf)); RequestDispatcher requestDispatcher = request.getRequestDispatcher("/WEB-INF/index.jsp"); requestDispatcher.forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
プロジェクトの実行
プロジェクトを実行し、(http://localhost:****/asrjsample/GraphServlet)へアクセスします。
グラフが追加された帳票のプレビューが確認できます。

印刷、PDFファイルの出力
・印刷(Microsoft XPS Document Writer使用)
※プレビュー左上の印刷ボタンから印刷を行えます。

・PDFファイル
※プレビュー左上のファイルアイコンをクリックしてPDFファイル出力を行えます。

対応するグラフの種類
- 折れ線グラフ
- 集合縦棒グラフ
- 集合横棒グラフ
- 円グラフ
- ドーナツグラフ
- 面グラフ
- レーダーチャート
- 散布図
さいごに
AS-Report for Javaでグラフを追加した帳票を作成する方法について解説してきました。
今回は以上になります。ありがとうございました。
AS-Report for Java製品ページはこちら
AS-Report for Java体験版はこちら(無償)