top / index / prev / next / target / source

2005-02-17 diary: Java: Jakarta POI (HSSF) を用いたExcelファイルからシートを削除するサンプル

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

old-v2

Java: Jakarta POI (HSSF) を用いたExcelファイルからシートを削除するサンプル

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

Jakarta POI (HSSF) を用いたExcelファイルからシートを削除するサンプル

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

確認に利用した動作環境

動作条件

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.HSSFWorkbook;

/** * Jakarta POIを使ってExcelシートを削除します。 * * @author iga / public class PoiRemoveExcelSheetSample { /* * 入力ファイルとして与えるExcelファイルのファイル名 */ private static final String INPUT_FILE_EXCEL = "inputExcel.xls";

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

    /**
     * 処理の過程で削除を行うシートの名称
     */
    private static final String REMOVE_SHEET_NAME = "Sheet1";

    public static void main(String[] args) {
            System.out.println("Excelファイルを読み込んでシートを削除するサンプル.");
            FileInputStream inStream = null;
            File fileInput = new File(INPUT_FILE_EXCEL);
            if (fileInput.exists() == false || 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("シート[" + REMOVE_SHEET_NAME + "]の削除を行います.");
            int sheetIndex = hssfWorkbook.getSheetIndex(REMOVE_SHEET_NAME);
            if (sheetIndex < 0) {
                    System.err.println("指定のExcelシート[" + REMOVE_SHEET_NAME
                                    + "]が見つかりませんでした.");
                    return;
            }
            hssfWorkbook.removeSheetAt(sheetIndex);
            sheetIndex = hssfWorkbook.getSheetIndex(REMOVE_SHEET_NAME);
            if (sheetIndex >= 0) {
                    System.err.println("指定のExcelシート[" + REMOVE_SHEET_NAME
                                    + "]が削除できませんでした.");
                    return;
            }

            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のサンプル


この日記について