2011年9月1日木曜日

Java でExcel を操作する(POIを使用)


Java でExcel を操作することはできないかと探し
以下を参考にしました。

http://www.javadrive.jp/poi/

POIのバージョンは、この時点での最新バージョンで
ある、3.8-beta4を使用しました。
 はじめLinuxのJavaの環境でやってみたのですが、
「許可がありません」というメッセージがでてコンパイル
できませんでした。

ただWindowsの環境で動作することが確認できました
ので、いいかなと思っています。


サンプルソース(testというシートを作成する)


import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;


public class sample{
  public static void main(String[] args){
    HSSFWorkbook workbook = new HSSFWorkbook();

    workbook.createSheet("test");

    FileOutputStream out = null;
    try{
      out = new FileOutputStream("sample.xls");
      workbook.write(out);
    }catch(IOException e){
      System.out.println(e.toString());
    }finally{
      try {
        out.close();
      }catch(IOException e){
        System.out.println(e.toString());
      }
    }
  }
}



サンプル2(sample2_1.xlsというファイルを作成する。)

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.*;

public class Sample2_1{
  public static void main(String[] args){
    Workbook wb = new HSSFWorkbook();

    FileOutputStream out = null;
    try{
      out = new FileOutputStream("sample2_1.xls");
      wb.write(out);
    }catch(IOException e){
      System.out.println(e.toString());
    }finally{
      try {
        out.close();
      }catch(IOException e){
        System.out.println(e.toString());
      }
    }
  }
}


Excelファイルを編集するサンプル。sample2_2.xls を読み出して、左から6列について、2行めに値が入っていたら3行めにCHeck! と記入します。その後sample2_3.xls という名前で保存します。

//import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import java.io.*;

public class Sample2_2{
  public static void main(String[] args){
    FileInputStream in = null;
    Workbook wb = null;

    try{
      in = new FileInputStream("sample2_2.xls");
      wb = WorkbookFactory.create(in);
    }catch(IOException e){
      System.out.println(e.toString());
    }catch(InvalidFormatException e){
      System.out.println(e.toString());
    }finally{
      try{
        in.close();
      }catch (IOException e){
        System.out.println(e.toString());
      }
    }

    Sheet sheet = wb.getSheetAt(0);
    Row row1 = sheet.getRow(1);
    Row row2 = sheet.createRow(2);

    for (int i = 0 ; i < 6 ; i++){
      Cell cell = row1.getCell(i);
      if (cell != null){
        row2.createCell(i).setCellValue("Check!");
        System.out.println(cell);
      }
    }

    FileOutputStream out = null;
    try{
      out = new FileOutputStream("sample2_3.xls");
      wb.write(out);
    }catch(IOException e){
      System.out.println(e.toString());
    }finally{
      try {
        out.close();
      }catch(IOException e){
        System.out.println(e.toString());
      }
    }
  }
}



0 件のコメント:

コメントを投稿