はじめに
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リンクをユーザーがクリックすると、スプレッドシートが作成されます。