Excelに吐き出す

先日、CSVを作成するプログラムを組んだので、
その延長線として?

Excelを吐き出すプログラムでも試しにつくってみようと思う。

世の中には便利なライブラリがいっぱいあるので、
今回はそれを利用します。

import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;

public class PoiSample {
	
    public static void main(String [] args){		
        makeFile();
    }
	
    public static void makeFile() {
    
    	try{
            //新規ワークブックを作成する
            HSSFWorkbook wb = new HSSFWorkbook();

            FileOutputStream fileOut 
            = new FileOutputStream("C:\\Users\\xxx\\making\\PoiSampleBook.xls");
            
            //新規ワークシートを作成する
            HSSFSheet sheet1 = wb.createSheet();
            HSSFSheet sheet2 = wb.createSheet();

            //作成したシート名を変更
            wb.setSheetName(0,"sheet1");    
            wb.setSheetName(1,"シート2");

            //行オブジェクトの作成(行番号は0スタート)
            //1行目
            HSSFRow row1 = sheet1.createRow(0);
            //2行目
            HSSFRow row2 = sheet1.createRow(1);
            
            //セルオブジェクトの作成(セル番号は0スタート)
            //引数はshort型でキャストしなければならない点に注意
            //B列
            HSSFCell cellB2 = row2.createCell((short)1);
            //C列
            HSSFCell cellC2 = row2.createCell((short)2);
            
            //セルに値を設定する
            //専用の文字列を作成する。
            HSSFRichTextString cellBValue = new HSSFRichTextString("B2");
            cellB2.setCellValue(cellBValue);
            
            HSSFRichTextString cellCValue = new HSSFRichTextString("C2日です");
            cellC2.setCellValue(cellCValue);
            
            //作成したワークブックを保存する
            wb.write(fileOut);
            fileOut.close();
            System.out.println(
                "Excelファイルの作成が完了しました!");
    		
        }catch(Exception e){
            e.printStackTrace();
            System.out.println("処理が失敗しました");
        }
    }	
}

けれども、
Eclipseを立ち上げると重いので、
全てコマンドラインでやってみようかと思います。


だから、コンパイル時のライブラリの通し方が面倒くさい。。

  • 参考ページ

http://www.atmarkit.co.jp/fjava/onepoint/java/jv_clpath.html

  • 実際書いたコマンド
  1. コンパイル*1
javac -cp poi-contrib-3.0-alpha3-20061212.jar;poi-scratchpad-3.0-alpha3-20061212.jar;poi-3.0-alpha3-20061212.jar PoiSample.java
  1. JMで起動
java -cp poi-contrib-3.0-alpha3-20061212.jar;poi-scratchpad-3.0-alpha3-20061212.jar;poi-3.0-alpha3-20061212.jar PoiSample

→でも、これだと通らなかった。

  • cpを書く場合は、現在のワークフォルダを絶対指定で書き足さなければいけないみたい。

というわけで、実際に書いたものは、

java -cp C:\Users\xxx\making;poi-contrib-3.0-alpha3-20061212.jar;poi-scratchpad-3.0-alpha3-20061212.jar;poi-3.0-alpha3-20061212.jar PoiSample


ちょっとした達成感。
ちょっとした成功。

v(。・ω・。)ィェィ♪

*1:ライブラリは、jarの状態で同じワークスペースフォルダに入っている