Skip to content

Latest commit

 

History

History
146 lines (114 loc) · 5.94 KB

ig050217.src.md

File metadata and controls

146 lines (114 loc) · 5.94 KB

old-v2

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

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

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

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

確認に利用した動作環境

動作条件

  • Jakarta POI にクラスパスが通してあること

    • poi-2.5.1-final-20040804.jar

    • poi-contrib-2.5.1-final-20040804.jar

  • inputExcel.xls というExcelファイルがカレントディレクトリに存在すること。

  • Sheet1 というワークシートが存在すること。 PoiRemoveExcelSheetSample.java

/*
 * Jakarta POI 用いた Excelシート削除サンプル
 * Copyright(C) 2005 伊賀敏樹
 * 作成日: 2005/02/17
 */

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