top / index / prev / next / target / source

2005-02-18 diary: Java: Jakarta POI (HSSF) を用いたExcelファイルの内容を変更するサンプル

いがぴょん画像(小) 日記形式でつづる いがぴょんコラム ウェブページです。

old-v2

Java: Jakarta POI (HSSF) を用いたExcelファイルの内容を変更するサンプル

Jakarta POIを用いたExcelファイルの内容を変更するトイプログラムを作りました。サンプルソースコードをメモしておきます。

Jakarta POI (HSSF) を用いたExcelファイルの内容を変更するサンプル

Jakarta POIを使ってExcelシートの内容を変更するサンプルです。処理の過程で、Excelファイルを保存する際には別名保存しています。

確認に利用した動作環境

動作条件

/*
 * Jakarta POI 用いた Excelファイル変更サンプル
 * Copyright(C) 2005 伊賀敏樹
 * 作成日: 2005/02/18
 */

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
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;

/**
 * Jakarta POIを使ってExcelファイルに変更を加えます。
 * 
 * @author iga
 */
public class PoiModifyExcelSample {
        /**
         * 入力ファイルとして与えるExcelファイルのファイル名
         */
        private static final String INPUT_FILE_EXCEL = "inputExcel.xls";

        /**
         * 出力ファイルとして与えるPDFファイルのファイル名
         */
        private static final String OUTPUT_FILE_EXCEL = "outputExcel.xls";

        public static void main(String[] args) {
                System.out.println("Excelファイルを読み込んで内容を変更するサンプル.");
                FileInputStream inStream = null;
                File fileInput = new File(INPUT_FILE_EXCEL);
                if (fileInput.exists() == false) {
                        System.out.println("入力ファイル[" + fileInput.getAbsolutePath()
                                        + "]が見つかりません.処理を中断します.");
                        return;
                }
                if (fileInput.canRead() == false) {
                        System.out.println("入力ファイル[" + fileInput.getAbsolutePath()
                                        + "]が読み込み可能ではありません.処理を中断します.");
                        return;
                }
                try {
                        inStream = new FileInputStream(fileInput);
                } catch (FileNotFoundException ex) {
                        System.err.println("入力ファイル[" + fileInput.getAbsolutePath()
                                        + "]のオープンに失敗しました.:" + ex.toString());
                        return;
                }

                HSSFWorkbook hssfWorkbook = null;
                try {
                        hssfWorkbook = new HSSFWorkbook(inStream);
                } catch (IOException ex) {
                        System.err.println("Excelのファイル形式が不正です.:" + ex.toString());
                        return;
                }

                System.out.println("シートの内容に変更を加えます.");
                HSSFSheet hssfSheet = hssfWorkbook.getSheet("Sheet1");
                if (hssfSheet == null) {
                        System.err.println("指定のExcelシートが見つかりませんでした.");
                        return;
                }
                HSSFRow hssfRow = hssfSheet.getRow(5);
                if (hssfRow == null) {
                        System.err.println("指定のExcel行が見つかりませんでした. "
                                        + "なお、行は0オリジンとなっています。つまり6行目は 5 と指定します。");
                        return;
                }
                HSSFCell hssfCell = hssfRow.getCell((short) 4);
                if (hssfCell == null) {
                        System.err.println("指定のExcel列が見つかりませんでした. "
                                        + "なお、列は0オリジンとなっています。つまりE列は 4 と指定します。");
                        return;
                }

                hssfCell.setEncoding(HSSFCell.ENCODING_UTF_16);
                hssfCell.setCellValue("値のセット");

                System.out.println("処理後の結果をExcelファイルに書き込みます.");
                File fileOutput = new File(OUTPUT_FILE_EXCEL);
                if (fileOutput.exists()) {
                        System.out.println("出力先ファイルは既に存在しています.事前削除処理を行います.");
                        if (fileOutput.delete() == false) {
                                System.out.println("出力ファイル[" + fileInput.getAbsolutePath()
                                                + "]が既に存在していたので事前に削除しようとしましたが削除に失敗しました.");
                                return;
                        }
                }

                OutputStream outStream = null;
                try {
                        outStream = new BufferedOutputStream(new FileOutputStream(
                                        fileOutput));
                        hssfWorkbook.write(outStream);
                        System.out.println("新規作成したExcelブックのファイル保存に成功しました.");
                } catch (IOException ex) {
                        ex.printStackTrace();
                } finally {
                        try {
                                outStream.close();
                        } catch (IOException ex2) {
                                ex2.printStackTrace();
                        }
                }
        }
}

他のJakarta POIのサンプル


この日記について