Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Apache POI HSSFによるExcelファイルの作成

Java EEのWebプロジェクトにおけるExcelデータの書き出し

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/03/17 14:00

 Webはデータで満ちており、データを検索して表示するにはもってこいのメディアです。しかし多くの場合、ブラウザはデータ分析に適したツールとは言えません。以前の記事「Reading Excel Files with Apache POI HSSF」では、Excelブックを使ってJavaアプリケーションにデータを提供する方法を解説しました。今回は、同じ形式でユーザーにデータを提供する方法を見てみましょう。

目次

はじめに

 Webはデータで満ちており、データを検索して表示するにはもってこいのメディアです。多くのユーザーは、データが見つかると、自分の思考プロセスに合った方法でデータを分析したいと考えます。一部のWebアプリケーションは、データ表示オプションをどんどん増やすことで、このニーズに応えようとしています。それが適切な場合もあります。例えば、価格と機能を比較できるEコマースサイトなどです。それ以外の多くの場合には、ブラウザはデータ分析に適したツールとは言えません。特に、パワーユーザーは満足できないでしょう。財務データはその最たる例です。ビジネスインテリジェンスサイトのユーザーはデータをさまざまな切り口で見ることを望みますが、ユーザーごとに異なる表示方法を作成しようとすると、使い勝手の悪いものになり、保守作業が増えてしまいます。個人投資家は、株価分析サイトの融通の利かなさにしばしばフラストレーションを募らせます。

 一部の非常に高価なプラットフォームでは、ユーザーが満足するまでデータを操作できるWebページを作成できます。そのようなプラットフォームは、ライセンス、ハードウェア、トレーニングに費用がかかり、開発にはさらに多額の費用がかかります。アプリケーションによっては、この費用から高い投資収益を得られます。また、ユーザーが自由に操作できる形式で、非常に簡単にデータを提供できます。

 スプレッドシートはこの目的に申し分なく、前述のような高価なプラットフォームはスプレッドシートを自動的に生成してくれます。

 あるいは、こうしたスプレッドシートを、費用をかけずに自分で作ることもできます。

 以前の記事「Reading Excel Files with Apache POI HSSF」では、Excelブックを使ってJavaアプリケーションにデータを提供する方法を解説しました。今回は、同じ形式でユーザーにデータを提供する方法を見てみましょう。

簡単なスプレッドシート

 ごく簡単なスプレッドシートの場合、Officeアプリケーションに組み込まれたHTMLの読み書き機能を利用して、すべての作業を自動的に行うことができます。HTMLの表をスプレッドシートに変換するのに必要なことは、ヘッダー行に<th>タグを使うといった、いくつかの適切な書式設定だけです。次にその例を示します。

<table border="1" bordercolor="black">
   <tr>
      <th style="background-color: black; color: white;">
         Col 1
      </th>
      <th style="background-color: black; color: white;">
         Col 2
      </th>
      <th style="background-color: black; color: white;">
         Col 3
      </th>
   </tr>
   <tr>
      <td bgcolor="red">1</td>
      <td bgcolor="green">2</td>
      <td bgcolor="red">3</td>
   </tr>
   <tr>
      <td bgcolor="green">4</td>
      <td bgcolor="red">5</td>
      <td bgcolor="green">6</td>
   </tr>
</table>

 ここでJavaコードを使っていないのは著者がずぼらだからです。読者は、データセットを反復処理してヘッダーとフィールドの値を設定する処理を自分なりに想像してみてください。

 次に、JSPのMIMEタイプを設定します。

<%@ page language="java"
         contentType="text/html; charset=ISO-8859-1"
         pageEncoding="ISO-8859-1"%>
<%
   response.reset();
   response.setContentType("application/xls");
   response.setHeader("Content-Disposition",
                      "attachment;filename=simpleDemo.xls");
%>

 一部のWebサーバーでは、次のようにMIMEタイプをweb.xmlで定義する必要があります。

<mime-mapping>
   <extension>xls</extension>
   <mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>

 このJSPに対する標準的なhrefリンクをユーザーがクリックすると、スプレッドシートが作成されます。

図1 MIMEタイプからのダウンロードダイアログ
図1 MIMEタイプからのダウンロードダイアログ
図2 完成した簡単なスプレッドシート
図2 完成した簡単なスプレッドシート

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

  • Scott Nelson(Scott Nelson)

    ポータルおよびその他の複合Webアプリケーションを専門とするシニアプリンシパルコンサルタント。個人経営の商店からFortune 500(c)に入る多国籍企業まで、大小さまざまな企業向けのアプリケーションを「正しく」かつ「早く」作成した実績を持つ。

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5