読者です 読者をやめる 読者になる 読者になる

あずきみるくのあずきはニガテ - for Engineer

ひよっこプログラマがやってみたことやハマっちゃったことなど、備忘録的な感じで書いていきます。

【java】 Apache POI を使ってみた。- 実装編② 既存のExcelファイルを編集して出力

Java Apache POI eclipse

POIの実装編です。
今までのはこちら。

【java】 Apache POI を使ってみた。- インストール編 - あずきみるくのあずきはニガテ - for Engineer

【java】 Apache POI を使ってみた。- 実装編① Excelを新規作成して出力 - あずきみるくのあずきはニガテ - for Engineer


なんかいちいちタイトル長くてほんま、すんません m(_ _)m

今度は既存のファイルに追加してみようと思います。
いつもの環境はこちら。

<環境>


で、ソース。

package sample;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class Sample2 {

    public static void main(String[] args) throws IOException {

        // 変更元を取込
        FileInputStream in 
            = new FileInputStream("C:\\Temp/Sample1.xlsx");

        Workbook book = null;
        try {
	    // 今回、WorkBookはWorkbookFactoryを使って作成します
	    book = WorkbookFactory.create(in);

	} catch (EncryptedDocumentException e1) {
	    e1.printStackTrace();

	} catch (InvalidFormatException e1) {
   	    e1.printStackTrace();
	}

	// 「サンプル」という名前のシートを取得
	Sheet sheet = book.getSheet("サンプル");

	// 1行目取得 ※Excel上、行番号は1からスタートしてますが、
	// ソース内では0からのスタートになっているので要注意!
	Row row = sheet.getRow(0);

	// 1つ目のセルを取得 ※行と同じく、0からスタート
	Cell a1 = row.getCell(0);    // Excel上、「A1」の場所

	// 値をセット
	a1.setCellValue("POIのテスト_変更後");

	// ここから出力処理
	FileOutputStream out = null;
	try {
	    // 出力先のファイルを指定
	    out = new FileOutputStream("C:\\Temp/Sample1.xlsx");
	    // 上記で作成したブックを出力先に書き込み
	    book.write(out);

	} catch (FileNotFoundException e) {
	    System.out.println(e.getStackTrace());

	} finally {
	    // 最後はちゃんと閉じておきます
	    out.close();
	    book.close();
	}
    }
}

ポイントは
WorkBookの作成時に「WorkbookFactory」を使う
こと。
それ以外は基本的に大きくは新規作成時と変わらないイメージ。


で、出力後、ちゃんと変更されていることも確認できました。

f:id:azuki-milk-lush:20151111145737p:plain



<参考>
いつもお世話になっております。
ここは本当に詳しく書いてくださってます。
もっといろいろやってみたいときはぜひ、参考にしてください!

www.javadrive.jp