JCom(Java-COMブリッジ)



サンプル1:基本的な使い方

(jcom)/demo/samples/testExcel.java
import jp.ne.so_net.ga2.no_ji.jcom.excel8.*;
import jp.ne.so_net.ga2.no_ji.jcom.*;
import java.io.File;
import java.util.Date;

/* Excel用ラッパを使った、JComのサンプルプログラム */
class testExcel {
    public static void main(String[] args) throws Exception {
        ReleaseManager rm = new ReleaseManager();
        try {
            System.out.println("EXCELを起動中...");
            // すでに立ち上がっていると、新しいウィンドウで開く。
            ExcelApplication excel = new ExcelApplication(rm);
            excel.Visible(true);
            // 色んな情報を表示
            System.out.println("Version="+excel.Version());
            System.out.println("UserName="+excel.UserName());
            System.out.println("Caption="+excel.Caption());
            System.out.println("Value="+excel.Value());

            ExcelWorkbooks xlBooks = excel.Workbooks();
            ExcelWorkbook xlBook = xlBooks.Add();   // 新しいブックを作成
            
            // すべてのファイルを列挙してみる
            System.out.println("現在のディレクトリのファイルをセルに設定");
            ExcelWorksheets xlSheets = xlBook.Worksheets();
            ExcelWorksheet xlSheet = xlSheets.Item(1);
            ExcelRange xlRange = xlSheet.Cells();

            xlRange.Item(1,1).Value("ファイル名" );
            xlRange.Item(2,1).Value("サイズ" );
            xlRange.Item(3,1).Value("最終更新日時");
            xlRange.Item(4,1).Value("ディレクトリ");
            xlRange.Item(5,1).Value("ファイル");
            xlRange.Item(6,1).Value("読み込み可");
            xlRange.Item(7,1).Value("書き込み可");

            File path = new File("./");
            String[] filenames = path.list();
            for(int i=0; i<filenames.length; i++) {
                File file = new File(filenames[i]);
                System.out.println(file);
                xlRange.Item(1,i+2).Value( file.getName() );                // ファイル名パス無し
                xlRange.Item(2,i+2).Value( (int)file.length() );            // ファイルサイズ
                xlRange.Item(3,i+2).Value( new Date(file.lastModified()) ); // 最終更新日時
                xlRange.Item(4,i+2).Value( file.isDirectory()?"Yes":"No" ); // ディレクトリか?
                xlRange.Item(5,i+2).Value( file.isFile()?"Yes":"No" );      // ファイルか?
                xlRange.Item(6,i+2).Value( file.canRead()?"Yes":"No" );     // 読み取り可か?
                xlRange.Item(7,i+2).Value( file.canWrite()?"Yes":"No" );    // 書き込み可か?
            }
            String expression = "=Sum(B2:B"+(filenames.length+1)+")";
            System.out.println("数式を埋め込み、ファイルサイズの合計を求める "+expression);
            xlRange.Item(1,filenames.length+2).Value("合計");
            xlRange.Item(2,filenames.length+2).Formula(expression);
            xlRange.Columns().AutoFit();    // 横幅をフィットさせる

            // プリンタに出力する場合はコメントをはずしてください。
            // デフォルトのプリンタに出力されます。
//          System.out.println("プリンタに印刷します。");
//          xlSheet.PrintOut();

            // ファイルに保存する場合はコメントを外してください。
            // ディレクトリを指定しない場合は、(My Documents)に保存されます。
//          System.out.println("ファイルに保存します。(My Documents)\\testExcel.xls");
//          xlBook.SaveAs("testExcel.xls");

            xlBook.Close(false,null,false);
            excel.Quit();

            System.out.println("ご静聴、ありがとうございました。");
        }
        catch(Exception e) { e.printStackTrace(); }
        finally { rm.release(); }
    }
}


サンプル2:Excelを使って見積書を作成

(jcom)/demo/estimate/

ある見積書を自動的に作るシステムがあると仮定します。 システム自体はJavaで組んでいますが、見積書の部分だけは Excelで作る必要があるとします。Excelの方が品質の高い シートが作れますし、今回はExcelの印刷機能も利用します。

まず、estimate.xlsを見てください。 これは見積書の原紙にあたります。 必要な数式も埋め込まれていますし、印刷範囲も設定済みです。 このファイルをいったん別の名前でコピーし、それに対して必要な 箇所に値を入れていきます。 そして印刷し、保存して終了します。

コピーされたファイルは、すべて残しておくものとします。 したがってファイル名はユニークな値にします。 これは、見積書Noと一致させる方がよいでしょう。 それらは見積有効期間が過ぎるまで保持します。 ただし、このサンプルではそこまで実装していません。

サンプルでは実際には印刷しませんが、以下の行をコメントから外せば印刷を行います。
    // est.print_enable = true;
実際の運用となると、プリンタの代わりにFAXやメールに送ることも 考えられますね。
このサンプルはJCom Ver2.01以降のファイルに含まれています。 Excel97,2000で動作します。

サンプル3:ExcelファイルからXMLを作成

(jcom)/demo/outxml/
サンプル2で作成されたいくつかの見積書から、必要なデータを 抽出してXMLに出力します。 まず、カレントディレクトリにあるExcelファイルを開き、 想定事例とは逆の方法で、該当セルからデータを取得します。 あとは、PrintWriterを使ってXMLファイルを作ります。

このサンプルではXMLの出力のみなので、XMLパーサは必要 ありません。 しかし、XMLパーサがあれば、XML→EXCELの 処理も可能でしょう。

●実行方法
あらかじめ、JComが正しくインストールしているものとします。

サンプル4:VBで作成したCOMを利用する。

(jcom)/demo/vbcom/

戻る