2010年3月22日月曜日

第5回:xlsファイルのタイトルなど(SummaryInformation)を取得

第4回でPOIを利用するための準備ができたので、今回はこれを利用した簡単な
プログラムを動かしてみることにします。

今回は、エクセルファイルのSummaryInformationを取得してみます。
これは、xlsファイルを右クリックして表示できるプロパティ情報を
取得したりしています。

例によってクラスを新規作成します。

第3回:プログラムを作って実行する。

の手順に従い、ここでは、「ReadProertyTest」という名前のクラスを作成してみます。

プロジェクト部分を右クリックして「New→class」でNameにReadProertyTestを入力します。

そして、プログラムの部分には、下記のプログラムを入力します。

==============================================
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.poi.hpsf.PropertySetFactory;
import org.apache.poi.hpsf.SummaryInformation;
import org.apache.poi.poifs.eventfilesystem.POIFSReader;
import org.apache.poi.poifs.eventfilesystem.POIFSReaderEvent;
import org.apache.poi.poifs.eventfilesystem.POIFSReaderListener;


public class ReadProertyTest {
 static class MyPOIFSReaderListener implements POIFSReaderListener{
     public void processPOIFSReaderEvent(POIFSReaderEvent event){
         SummaryInformation si = null;
         try{
             si = (SummaryInformation)
                  PropertySetFactory.create(event.getStream());
         }catch (Exception ex){
             throw new RuntimeException
                 ("Property set stream \"" +
                  event.getPath() + event.getName() + "\": " + ex);
         }
            System.out.println("Title: " + si.getTitle() );
         System.out.println("作者:"+si.getAuthor());
         System.out.println("最終更新日:"+si.getLastSaveDateTime());
         System.out.println("アプリケーション名:"+si.getApplicationName() );
     }
 }
 public static void main(String[] args) throws IOException{
     final String filename = "C:\\temp\\sample.xls";
     POIFSReader r = new POIFSReader();
     r.registerListener(new MyPOIFSReaderListener(),
                        "\005SummaryInformation");
     r.read(new FileInputStream(filename));
 }
}

==============================================

プログラムの読み方は、下記のとおりです。
まずは

public static void main

の部分から開始されます。

最初に、読み取るファイルを支持するために、ファイル名を特定する下記の
記述をしています。

final String filename = "C:\\temp\\sample.xls";

次は、POIの機能を利用するためのおまじないみたいな文言を入力します。
「MyPOIFSReaderListener」の部分は、すぐ上に書いているプログラムの
名前を書いています。

POIFSReader r = new POIFSReader();
r.registerListener(new MyPOIFSReaderListener(),
"\005SummaryInformation");

最後にPOIの部品に対して、ファイルを読み込ませる命令を記述します。

r.read(new FileInputStream(filename));

これが呼び出されると、下記の部分が呼び出されるという流れになります。

public void processPOIFSReaderEvent(POIFSReaderEvent event){

そして、実際に情報を出力している部分は、下記の箇所になります。

System.out.println("Title: " + si.getTitle() );
System.out.println("作者:"+si.getAuthor());
System.out.println("最終更新日:"+si.getLastSaveDateTime());
System.out.println("アプリケーション名:"+si.getApplicationName() );

ちなみにこの部分は、他にもいろいろな情報が詰まっているので、
好きな情報を出力することができます。

どんな情報が詰まっているかというのは、下記のページに説明書があります。

http://poi.apache.org/apidocs/org/apache/poi/hpsf/SummaryInformation.html

si.getTitle()

などの「getTitle() 」の部分を上記のリンクに書いているほかのものに変えていけば
該当する情報が出力できます。

これで、このプログラムがきちんと動作していれば、POIのインストールは
無事に完了しています。

また、最初は、わからない部分には目をつむって、見よう見まねでやっていけば
徐々に慣れてくると思います。

0 件のコメント:

コメントを投稿