@634

Jakarta POI

Advertisement

Jakarta POIとは

MicrosoftのOLE2複合ドキュメントに対する操作を可能とする。プラットフォームに依存せずに使用することが可能。

入手

Jakarta POIオフィシャルサイトよりバイナリを入手する。

Excelワークブックオブジェクトの作成

POIで新規にExcelファイルを作成する場合、始めにExcelワークブックのオブジェクトを作成する。ExcelワークブックのクラスはHSSFWorkbook

サンプル
PoiTest.java
import java.io.FileOutputStream;
import java.io.OutputStream;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class PoiTest {
    public static void main(String[] args) throws Exception{
        HSSFWorkbook workbook = new HSSFWorkbook();
    }
}

Excelファイルの保存

Excelワークブックのオブジェクトを作成すると、新規のExcelファイルが作成される。この状態でExcelファイルの保存を行うと空のExcelファイルが保存される。
ファイルの書き出しにはHSSFWorkbookのwriteメソッドを使用する。
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class PoiTest {
    public static void main(String[] args) throws Exception{
        HSSFWorkbook workbook = new HSSFWorkbook();
        OutputStream out = new FileOutputStream("c:\\sample.xls");
        workbook.write(out);
    }
}
実行すると、Cドライブに空のExcelファイルが作成される。

ワークシートの作成

HSSFSheetクラスを使用してワークシートに対する操作を行うことが出来る。

ワークブックを作成した時点では、ワークシートがひとつだけ存在する。HSSFWorkbookクラスのcreateSheetメソッドを使用して、ワークシートを作成することができる。

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

public class PoiTest {
    public static void main(String[] args) throws Exception{
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet1 = workbook.createSheet();
        HSSFSheet sheet2 = workbook.createSheet();
        HSSFSheet sheet3 = workbook.createSheet("sheetName");

        OutputStream out = new FileOutputStream("c:\\sample.xls");
        workbook.write(out);
    }
}
明示的にシート名を指定しないでワークシートを作成すると、sheet0から始まる連番がシート名に指定されている。

テンプレートの読み込み

POIではワークブックを新規作成する以外に、既存のテンプレートファイルを読み込むことができる。処理の流れは以下のようになる。
  1. InputStreamオブジェクトを作成
  2. POIFSFileSystemを作成
  3. HSSFWorkbookを作成
import java.io.FileInputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class PoiTest {
    public static void main(String[] args) throws Exception{
        FileInputStream in = null;
        try{
            in = new FileInputStream("c:\\file.xls");
            POIFSFileSystem pfs = new POIFSFileSystem(in);
            HSSFWorkbook workbook = new HSSFWorkbook(pfs);
        }finally{
            in.close();
        }
    }
}

行、セルの取得〜文字の書き出し

ワークブック>ワークシート>行>セルという順にオブジェクトを取得して、セルに対して値や書式の指定を行う。

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

public class PoiTest {
    public static void main(String[] args) throws Exception{
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet();
        HSSFRow row = sheet.createRow(0);
        HSSFCell cell = row.createCell((short)0);
        cell.setCellValue("hello poi");

        OutputStream out = new FileOutputStream("c:\\sample.xls");
        workbook.write(out);
    }
}
行の中のセルを取得する場合、HSSFRow.createCellメソッドを利用する。すでにセルが存在する場合はHSSFRow.getCellメソッドでセルを取得することも出来る。ただし、getCellメソッドで取得しようとしたセルが空の場合、例外が発生するため注意が必要。

罫線の描画

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

public class PoiTest {
    public static void main(String[] args) throws Exception{
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet();
        HSSFRow row = sheet.createRow(0);
        HSSFCell cell = row.createCell((short)0);
        cell.setCellValue("hello poi");

        HSSFCellStyle style = workbook.createCellStyle();
        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        cell.setCellStyle(style);

        OutputStream out = new FileOutputStream("c:\\sample.xls");
        workbook.write(out);
    }
}
利用できる罫線は、org.apache.poi.hssf.usermodel.HSSFCellStyleクラスに定数として定義されている。
  • BORDER_DASH_DOT
  • BORDER_DASH_DOT_DOT
  • BORDER_DASHED
  • BORDER_DOTTED
  • BORDER_DOUBLE
  • BORDER_HAIR
  • BORDER_MEDIUM
  • BORDER_MEDIUM_DASH_DOT
  • BORDER_MEDIUM_DASH_DOT_DOT
  • BORDER_MEDIUM_DASHED
  • BORDER_NONE
  • BORDER_SLANTED_DASH_DOT
  • BORDER_THICK
  • BORDER_THIN

リンク

Advertisement

ショートカット

634
634ブログ
このカテゴリのトップページに戻る
Incubator(Pukiwiki)
634ラボ
   UIコレクションギャラリー
   ZO-3ジェネレーター

サイト検索


Y!ログール