org.opengion.fukurou.model

## クラス ExcelModel

- java.lang.Object
- - org.opengion.fukurou.model.ExcelModel

-     public class ExcelModel
      extends Object

       POI による、EXCELバイナリファイルに対する、データモデルクラスです。

       共通的な EXCEL処理 を集約しています。
       staticメソッドによる簡易的なアクセスの他に、順次処理も可能なように
       現在アクセス中の、Workbook、Sheet、Row、Cell オブジェクトを内部で管理しています。

       入力形式は、openXML形式にも対応しています。
       ファイルの内容に応じて、.xlsと.xlsxのどちらで読み取るかは、内部的に
       自動判定されます。

  変更履歴:

    6.0.2.0 (2014/09/19) 新規作成

  機能分類
    その他
  バージョン
    6.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK7.0,

- - ### コンストラクタのサマリー

    コンストラクタ
    コンストラクタと説明
    `ExcelModel(File file)` EXCELファイルのWookbookのデータ処理モデルを作成します。
    `ExcelModel(File file, boolean isOpen)` EXCELファイルのWookbookのデータ処理モデルを作成します。

  - ### メソッドのサマリー

    すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `void` | `activeWorkbook(boolean isCellDel)` Workbook の全Sheetを対象に、空行を取り除き、全体をシュリンクします。
    `void` | `addImageFile(String imgFile, int shtNo, int rowNo, int colNo)` 指定のシートの行・列の箇所に、イメージファイルを挿入します。
    `void` | `addImageFile(String imgFile, int shtNo, int row1, int col1, int row2, int col2, int dx1, int dy1, int dx2, int dy2)` 指定のシートの行・列の箇所に、イメージファイルを挿入します。
    `void` | `createRow(int rowNo)` Excelの指定行のRowオブジェクトを作成します。
    `void` | `createSheet(String shtName, boolean isOverwrite)` 内部 Workbookより、新しいSheetを作ります。
    `int` | `getFirstRowNum()` 内部 Workbookの 現在Sheet の最初の行番号を返します。
    `int` | `getLastRowNum()` 内部 Workbookの 現在Sheet の最後の行番号を返します。
    `String[]` | `getNames()` 名前定義一覧を内部の Workbook から取得します。
    `int` | `getNumberOfSheets()` 内部 Workbookの Sheet数を返します。
    `String` | `getSheetName(int shtNo)` 内部 Workbook の 指定のSheet番号のシート名前を返します。
    `String[]` | `getSheetNames()` シート一覧を、内部の Workbook から取得します。
    `int` | `getSheetNo(String shtName)` 内部 Workbook の 指定のSheet名のシート番号を返します。
    `String[]` | `getStyleNames()` 書式のスタイル一覧を内部の Workbook から取得します。
    `String` | `getValue(int rowNo, int colNo)` 現在のrow にあるセルの属性値を返します。
    `String[]` | `getValues(int rowNo)` 現在のRow にあるセルの属性値を配列で返します。
    `static void` | `main(String[] args)` アプリケーションのサンプルです。
    `void` | `removeCell(int startCellNum)` Excelの処理中のRowオブジェクトの指定カラム以降の余計なCellオブジェクトを削除します。
    `void` | `removeRow(int startRowNum)` Excelの指定行以降の余計なRowオブジェクトを削除します。
    `void` | `removeSheet(int fromNo, int toNo)` Excelの指定Sheetオブジェクトを削除します。
    `void` | `saveFile(File file)` 内部 Workbook オブジェクトをファイルに書き出します。
    `void` | `setAddTitleSheet(String shtName)` Sheet一覧を先頭Sheetに作成する場合のSheet名を指定します。
    `void` | `setCellLink(String linkVal, int colNo)` Excelの指定セルにHyperlinkを設定します。
    `void` | `setCellStyle()` データ設定する セルに、罫線を追加します。
    `void` | `setCellValue(String dataVal, int colNo)` Excelの指定セルにデータを設定します。
    `void` | `setCellValue(String dataVal, int colNo, boolean isNumber)` Excelの指定セルにデータを設定します。
    `void` | `setDataStartRow(int st)` データ行の書き込み開始位置の行番号を設定します。
    `void` | `setFont(String fontName, short fontPoint)` 内部 Workbook に、フォント名、フォントサイズを設定します。
    `void` | `setRecalcSheetName(String[] sheets)` EXCELで、出力処理の最後にセルの計算式の再計算をさせるシート名の配列を指定します。
    `void` | `setRefSheetName(String refSheetName)` 内部 Workbookより、雛形Sheetをセットします。
    `void` | `setSheetName(int shtNo, String shtName)` 内部 Workbook の指定のシート番号の Sheet の名前を設定します。
    `void` | `setValues(String[] vals, int rowNo)` row にあるセルのオブジェクト値を設定します。
    `void` | `setValues(String[] vals, int rowNo, boolean[] isNums)` row にあるセルのオブジェクト値を設定します。
    `void` | `sheetCopy(TextConverter conv, String shtName)` Workbook の雛形シートのTextConverter した、新しいSheetを作成します。
    `void` | `sheetSelected(boolean isSelect)` 現在のシートを選択済み(true)か、非選択済み(false)に設定します。
    `void` | `textConverter(Map convMap)` Workbook の全Sheetを対象に、テキスト変換処理を行います(XSLX限定)。
    `void` | `textConverter(TextConverter conv)` Workbook の全Sheetを対象に、テキスト変換処理を行います(XSLX限定)。
    `void` | `useAutoCellSize(boolean flag)` 全てのSheetに対して、autoSizeColumn設定を行うかどうか指定します(初期値:false)。
    `void` | `useAutoCellSize(boolean flag, int count)` 全てのSheetに対して、autoSizeColumn設定を行うかどうか指定します(初期値:false)。

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### コンストラクタの詳細

    - #### ExcelModel

          public ExcelModel(File file)

      EXCELファイルのWookbookのデータ処理モデルを作成します。 ここでは、既存のファイルを読み込んで、データ処理モデルを作成しますので、 ファイルがオープンできなければエラーになります。
      パラメータ:
        `file` - EXCELファイル
      関連項目:
        `ExcelModel( File , boolean )`
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成
        6.2.0.0 (2015/02/27) ファイル引数を、String → File に変更

    - #### ExcelModel

          public ExcelModel(File file,
                            boolean isOpen)

      EXCELファイルのWookbookのデータ処理モデルを作成します。 isOpen条件によって、ファイルオープン(true)か、新規作成(false)が分かれます。 ファイルオープンの場合は、EXCELの読み込み以外に、追記するとか、雛形参照する 場合にも、使用します。 ファイルオープンの場合は、当然、ファイルがオープンできなければエラーになります。 isOpen=新規作成(false) の場合は、ファイル名の拡張子で、XSSFWorkbook か HSSFWorkbook を 判定します。.xlsx の場合⇒XSSFWorkbook オブジェクトを使用します。
      パラメータ:
        `file` - EXCELファイル
        `isOpen` - true:ファイルオープン/false:新規作成
      関連項目:
        `ExcelModel( File )`
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成
        6.0.2.3 (2014/10/10) POIUtil#createWorkbook( String ) を使用するように変更
        6.1.0.0 (2014/12/26) 入力ファイルの拡張子判定の対応
        6.2.0.0 (2015/02/27) ファイル引数を、String → File に変更
        6.2.2.0 (2015/03/27) マクロ付Excel(.xlsm)対応
        6.3.7.0 (2015/09/04),5.9.0.0 (2015/09/04) 標準を、SXSSFWorkbook に切り替えてみる。

  - ### メソッドの詳細

    - #### setFont

          public void setFont(String fontName,
                              short fontPoint)

      内部 Workbook に、フォント名、フォントサイズを設定します。 fontName(フォント名)は、"ＭＳ Ｐゴシック" など名称になります。 fontPoint は、フォントの大きさを指定します。 内部的には、setFontHeightInPoints(short)メソッドで設定します。
      パラメータ:
        `fontName` - フォント名 ("ＭＳ Ｐゴシック" など。nullの場合セットしません)
        `fontPoint` - フォントの大きさ (0やマイナスの場合はセットしません)
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### setCellStyle

          public void setCellStyle()

      データ設定する セルに、罫線を追加します。 ここで設定するのは、罫線の種類と、罫線の色ですが、内部的に固定にしています。 Border=CellStyle.BORDER_THIN BorderColor=IndexedColors.BLACK
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成
        6.5.0.0 (2016/09/30) poi-3.15 対応(Cell.CELL_TYPE_XXXX → CellType.XXXX)

    - #### useAutoCellSize

          public void useAutoCellSize(boolean flag)

      全てのSheetに対して、autoSizeColumn設定を行うかどうか指定します(初期値:false)。 autoSize設定で、カラム幅が大きすぎる場合、現状では、 初期カラム幅の５倍を限度にしています。 なお、autoSizeColumn設定は負荷の大きな処理なので、saveFile(String)の 中で実行されます。(セーブしなければ実行されません。) よって、指定は、いつ行っても構いません。
      パラメータ:
        `flag` - autoSizeColumn設定を行うかどうか [true:自動カラム幅設定を行う/false:行わない]
      関連項目:
        `useAutoCellSize( boolean,int )`
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### useAutoCellSize

          public void useAutoCellSize(boolean flag,
                                      int count)

      全てのSheetに対して、autoSizeColumn設定を行うかどうか指定します(初期値:false)。 autoSize設定で、カラム幅が大きすぎる場合、現状では、 初期カラム幅のcount倍を限度に設定します。 ただし、count がマイナスの場合は、無制限になります。 なお、autoSizeColumn設定は負荷の大きな処理なので、saveFile(String)の 中で実行されます。(セーブしなければ実行されません。) よって、指定は、いつ行っても構いません。
      パラメータ:
        `flag` - autoSizeColumn設定を行うかどうか [true:自動カラム幅設定を行う/false:行わない]
        `count` - 最大幅を標準セル幅の何倍にするかを指定。マイナスの場合は、無制限
      関連項目:
        `useAutoCellSize( boolean )`
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### setRecalcSheetName

          public void setRecalcSheetName(String[] sheets)

      EXCELで、出力処理の最後にセルの計算式の再計算をさせるシート名の配列を指定します。 null の場合は、再計算しません。 なお、再計算は、saveFile(String)の中で実行されます。(セーブしなければ実行されません。)
      パラメータ:
        `sheets` - 対象シート名の配列
      変更履歴:

        6.5.0.0 (2016/09/30) セルの計算式の再計算をさせる recalcSheetNames 属性の追加。

    - #### setDataStartRow

          public void setDataStartRow(int st)

      データ行の書き込み開始位置の行番号を設定します。 これは、autoSize設定で、自動調整するカラムを、ヘッダーではなく、 データ部で計算する場合に使用します。
      パラメータ:
        `st` - データ行の開始位置。未設定時は、-1
      関連項目:
        `useAutoCellSize( boolean )`
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### setAddTitleSheet

          public void setAddTitleSheet(String shtName)

      Sheet一覧を先頭Sheetに作成する場合のSheet名を指定します。 これは、Workbook に含まれる Sheet 一覧を作成する場合に、利用可能です。 この処理は、#saveFile( File ) 処理時に、実行されます。
      パラメータ:
        `shtName` - Sheet一覧のSheet名
      関連項目:
        `makeAddTitleSheet()`
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### getNumberOfSheets

          public int getNumberOfSheets()

      内部 Workbookの Sheet数を返します。
      戻り値:
        シート数
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### setRefSheetName

          public void setRefSheetName(String refSheetName)

      内部 Workbookより、雛形Sheetをセットします。 これは、雛形シートを使用する場合に、使います。このメソッドが呼ばれると、 雛形シートを使用すると判定されます。 雛形シート名が、内部 Workbook に存在しない場合は、エラーになります。 ただし、null をセットした場合は、最初のシートを雛形シートとして使用すると 判定します。
      パラメータ:
        `refSheetName` - 参照シート名(nullの場合、参照シート使用する場合は、先頭のシート)
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### createSheet

          public void createSheet(String shtName,
                                  boolean isOverwrite)

      内部 Workbookより、新しいSheetを作ります。 先に雛形シートを指定している場合は、その雛形シートから作成します。 指定していない場合は、新しいシートを作成します。 雛形シートを参照する場合は、雛形シートそのものを返します。 また、雛形シートの枚数を超える場合は、前の雛形シートをコピーします。 雛形シートが存在しない場合は、新しいシートを作成します。 シート名は、重複チェックを行い、同じ名前のシートの場合は、(1),(2)が付けられます。 shtName が null の場合は、"Sheet" が割り振られます。 この処理を行うと、内部の Sheet にも、ここで作成された Sheet が設定されます。
      パラメータ:
        `shtName` - シート名 (重複する場合は、(2)、(3)のような文字列を追加 、nullの場合は、"Sheet")
        `isOverwrite` - 雛形シート名をそのまま使用する場合は、true を指定します。
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成
        6.2.2.3 (2015/04/10) 雛形シートにそのままデータを書き込んでいく。
        6.5.0.0 (2016/09/30) 雛形シート名をそのまま使用する場合は、isOverwrite に、true を指定します。

    - #### setSheetName

          public void setSheetName(int shtNo,
                                   String shtName)

      内部 Workbook の指定のシート番号の Sheet の名前を設定します。 指定のシート名が、既存のシートになければ、そのまま設定します。 すでに、同じ名前のシートが存在する場合は、そのシート名の後に (1)、(2)、(3)のような文字列を追加します。 shtName が null の場合は、"Sheet" が割り振られます。
      パラメータ:
        `shtNo` - シート番号
        `shtName` - シート名 (重複する場合は、(1)、(2)のような文字列を追加 、nullの場合は、"Sheet")
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成
        6.2.5.1 (2015/06/12) シート名重複が自分自身の場合は、(1)等の追加は行わない。

    - #### getSheetName

          public String getSheetName(int shtNo)

      内部 Workbook の 指定のSheet番号のシート名前を返します。 シートが存在しない場合は、null を返します。 この処理を行うと、内部の Sheet にも、ここで見つけた Sheet が設定されます。
      パラメータ:
        `shtNo` - シート番号
      戻り値:
        shtName シート名
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### getSheetNo

          public int getSheetNo(String shtName)

      内部 Workbook の 指定のSheet名のシート番号を返します。 シートが存在しない場合は、-1 を返します。 この処理を行うと、内部の Sheet にも、ここで見つけた Sheet が設定されます。 シートが存在しない場合、内部の Sheet オブジェクトも null がセットされますのでご注意ください。
      パラメータ:
        `shtName` - シート名
      戻り値:
        シート番号(名前のシートがなければ、-1)
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### removeSheet

          public void removeSheet(int fromNo,
                                  int toNo)

      Excelの指定Sheetオブジェクトを削除します。 削除するシートは、シート番号でFrom-To形式で指定します。 Fromも Toも、削除するシート番号を含みます。 例えば、0,3 と指定すると、0,1,2,3 の ４シート分を削除します。
      パラメータ:
        `fromNo` - 削除する開始シート番号(含む)
        `toNo` - 削除する終了シート番号(含む)
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### getFirstRowNum

          public int getFirstRowNum()

      内部 Workbookの 現在Sheet の最初の行番号を返します。 行は、0 から始まります。 この処理は、内部Sheetが作成されているか、null でない場合のみ実行できます。
      戻り値:
        最初の行番号
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### getLastRowNum

          public int getLastRowNum()

      内部 Workbookの 現在Sheet の最後の行番号を返します。 最終行は、含みます。よって、行数は、getLastRowNum()＋１になります。 この処理は、内部Sheetが作成されているか、null でない場合のみ実行できます。
      戻り値:
        最後の行番号
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### createRow

          public void createRow(int rowNo)

      Excelの指定行のRowオブジェクトを作成します。 指定行の Row オブジェクトが存在しない場合は、新規作成します。 この処理を実行すると、指定行の Rowオブジェクトが内部 Row に設定されます。 この処理は、内部Sheetが作成されているか、null でない場合のみ実行できます。 この処理を行うと、内部の Rowオブジェクトが設定されます。
      パラメータ:
        `rowNo` - 行の番号
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### removeRow

          public void removeRow(int startRowNum)

      Excelの指定行以降の余計なRowオブジェクトを削除します。 指定行の Row オブジェクトから、getLastRowNum() までの行を、削除します。 この処理は、内部Sheetが作成されているか、null でない場合のみ実行できます。
      パラメータ:
        `startRowNum` - 指定以降の余計な行を削除
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### removeCell

          public void removeCell(int startCellNum)

      Excelの処理中のRowオブジェクトの指定カラム以降の余計なCellオブジェクトを削除します。 指定行の Row オブジェクトから、getLastCellNum() までのカラムを、削除します。 この処理は、内部Rowが作成されているか、null でない場合のみ実行できます。
      パラメータ:
        `startCellNum` - 指定以降の余計なカラムを削除
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### setValues

          public void setValues(String[] vals,
                                int rowNo)

      row にあるセルのオブジェクト値を設定します。 行が存在しない場合、行を追加します。 この処理を行うと、内部の Rowオブジェクトがなければ新規作成されます。
      パラメータ:
        `vals` - 新しい配列値。
        `rowNo` - 値が変更される行(無視されます)
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### setValues

          public void setValues(String[] vals,
                                int rowNo,
                                boolean[] isNums)

      row にあるセルのオブジェクト値を設定します。 行が存在しない場合、行を追加します。 引数に、カラムがNUMBER型かどうかを指定することが出来ます。 この処理を行うと、内部の Rowオブジェクトがなければ新規作成されます。
      パラメータ:
        `vals` - 新しい配列値。
        `rowNo` - 値が変更される行(無視されます)
        `isNums` - セルが、NUMBER型の場合は、true/それ以外は、false
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### setCellValue

          public void setCellValue(String dataVal,
                                   int colNo)

      Excelの指定セルにデータを設定します。 ここで設定する行は、現在の内部 Row です。 Row を切り替えたい場合は、#createRow( int ) を呼び出してください。 このメソッドでは、データを文字列型として設定します。 この処理は、内部Rowが作成されているか、null でない場合のみ実行できます。
      パラメータ:
        `dataVal` - String文字列
        `colNo` - セルの番号(0,1,2････)
      関連項目:
        `setCellValue( String,int,boolean )`
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### setCellValue

          public void setCellValue(String dataVal,
                                   int colNo,
                                   boolean isNumber)

      Excelの指定セルにデータを設定します。 ここで設定する行は、現在の内部 Row です。 Row を切り替えたい場合は、#createRow( int ) を呼び出してください。 このメソッドでは、引数のデータ型をNUMBER型の場合は、doubleに変換して、 それ以外は文字列としてとして設定します。 この処理は、内部Rowが作成されているか、null でない場合のみ実行できます。
      パラメータ:
        `dataVal` - String文字列
        `colNo` - セルの番号(0,1,2････)
        `isNumber` - セルが、NUMBER型の場合は、true/それ以外は、false
      関連項目:
        `createRow( int )`, `setCellValue( String,int )`
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### setCellLink

          public void setCellLink(String linkVal,
                                  int colNo)

      Excelの指定セルにHyperlinkを設定します。 ここで設定する行は、現在の内部 Row です。 Row を切り替えたい場合は、#createRow( int ) を呼び出してください。 このメソッドで設定するHyperlinkは、Sheetに対する LINK_DOCUMENT です。 先に、セルに対する値をセットしておいてください。 Hyperlinkは、文字に対して、下線 と 青字 のスタイル設定を行います。 Link文字列(シート名) が、null や ゼロ文字列の場合は、処理を行いません。
      パラメータ:
        `linkVal` - Link文字列(シート名)
        `colNo` - セルの番号(0,1,2････)
      関連項目:
        `setCellValue( String,int )`
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成
        6.5.0.0 (2016/09/30) poi-3.15 対応(Hyperlink.LINK_XXXX → HyperlinkType.XXXX)

    - #### getValues

          public String[] getValues(int rowNo)

      現在のRow にあるセルの属性値を配列で返します。 // * Rowオブジェクトが存在しない場合は、null を返します。 Rowオブジェクトが存在しない場合は、長さ０の配列を返します。 また、Rowオブジェクトの中の セルオブジェクトが存在しない場合は、 null がセットされます。 この処理は、内部Sheetが作成されているか、null でない場合のみ実行できます。 この処理を実行すると、指定行の Rowオブジェクトが内部 Row に設定されます。
      パラメータ:
        `rowNo` - 行の番号 // * @return 指定されたセルの属性値。Rowがnullの場合は、nullを返します。
      戻り値:
        指定されたセルの属性値。Rowがnullの場合は、長さ０の配列を返します。
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成
        6.3.9.0 (2015/11/06) ExcelModel#getValues(int) では、nullは返さない。
        6.3.9.1 (2015/11/27) メソッドの出口は、最後の１か所にすべきです(PMD)。

      このメソッドは、nullを返しません

    - #### getValue

          public String getValue(int rowNo,
                                 int colNo)

      現在のrow にあるセルの属性値を返します。 セルオブジェクトが存在しない場合は、null を返します。 この処理は、内部Sheetが作成されているか、null でない場合のみ実行できます。 この処理を実行すると、指定行の Rowオブジェクトが内部 Row に設定されます。
      パラメータ:
        `rowNo` - 値が参照される行
        `colNo` - 値が参照される列
      戻り値:
        指定されたセルの値 T
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成
        6.3.9.1 (2015/11/27) メソッドの出口は、最後の１か所にすべきです(PMD)。

    - #### addImageFile

          public void addImageFile(String imgFile,
                                   int shtNo,
                                   int rowNo,
                                   int colNo)

      指定のシートの行・列の箇所に、イメージファイルを挿入します。 ここでは、セル範囲ではなく、指定の行列の箇所に、アンカーを設定して、画像ファイルを 挿入します。一応、リサイズして、元の大きさ近くに戻しますが、縦横比が変わってしまいます。 正確に挿入する場合は、セル範囲の指定と、マージンを指定しなければなりませんが、 微調整が必要です。 この処理で使用される Sheetオブジェクトは一時的に作成されます。(キャッシュされません) 一連処理のどのタイミングで実行しても、内部の状態には影響はありません。
      パラメータ:
        `imgFile` - 挿入するイメージファイル名
        `shtNo` - シート番号
        `rowNo` - 挿入する行
        `colNo` - 挿入する列
      変更履歴:

        6.0.2.3 (2014/10/10) 新規作成

    - #### addImageFile

          public void addImageFile(String imgFile,
                                   int shtNo,
                                   int row1,
                                   int col1,
                                   int row2,
                                   int col2,
                                   int dx1,
                                   int dy1,
                                   int dx2,
                                   int dy2)

      指定のシートの行・列の箇所に、イメージファイルを挿入します。 ここでは、セル範囲ではなく、指定の行列の箇所に、アンカーを設定して、画像ファイルを 挿入します。一応、リサイズして、元の大きさ近くに戻しますが、縦横比が変わってしまいます。 正確に挿入する場合は、セル範囲の指定と、マージンを指定しなければなりませんが、 微調整が必要です。 この処理で使用される Sheetオブジェクトは一時的に作成されます。(キャッシュされません) 一連処理のどのタイミングで実行しても、内部の状態には影響はありません。
      パラメータ:
        `imgFile` - 挿入するイメージファイル名
        `shtNo` - シート番号
        `row1` - 挿入する行(開始)
        `col1` - 挿入する列(開始)
        `row2` - 挿入する行(終了-含まず)
        `col2` - 挿入する列(終了-含まず)
        `dx1` - 開始セルのX軸座標(マージン)
        `dy1` - 開始セルのY軸座標(マージン)
        `dx2` - 終了セルのX軸座標(マージン)
        `dy2` - 終了セルのY軸座標(マージン)
      変更履歴:

        6.0.2.3 (2014/10/10) 新規作成
        6.4.6.0 (2016/05/27) poi-3.15 準備

    - #### saveFile

          public void saveFile(File file)

      内部 Workbook オブジェクトをファイルに書き出します。 Excelの形式は、ここで指定する出力ファイルの拡張子ではなく、コンストラクタで 指定したファイルの拡張子で決まります。 異なる形式の拡張子を持つファイルを指定した場合、強制的に、オープンした Workbook の形式の拡張子を追加します。 拡張子は、Excel 2007以降の形式(.xlsx)か、Excel 2003以前の形式(.xls) が指定できます。 拡張子が未設定の場合は、オープンした Workbook の形式に合わせた拡張子を付与します。 isAutoCellSize=true の場合は、ここで全Sheetに対してCell幅の自動調整が行われます。
      パラメータ:
        `file` - セーブするファイル
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成
        6.1.0.0 (2014/12/26) 入力ファイルの拡張子判定の対応
        6.2.0.0 (2015/02/27) ファイル引数を、String → File に変更
        6.5.0.0 (2016/09/30) セルの計算式の再計算をさせる recalcSheetNames 属性の追加。

    - #### activeWorkbook

          public void activeWorkbook(boolean isCellDel)

      Workbook の全Sheetを対象に、空行を取り除き、全体をシュリンクします。 この処理は、#saveFile( File ) の直前に行うのがよいでしょう。 ここでは、Row を逆順にスキャンし、Cellが 存在しない間は、行を削除します。 途中の空行の削除ではなく、最終行からの連続した空行の削除です。 isCellDel=true を指定すると、Cellの末尾削除を行います。 有効行の最後のCellから空セルを削除していきます。 表形式などの場合は、Cellのあるなしで、レイアウトが崩れる場合がありますので 処理が不要な場合は、isCellDel=false を指定してください。
      パラメータ:
        `isCellDel` - Cellの末尾削除を行うかどうか(true:行う/false:行わない)
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

    - #### textConverter

          public void textConverter(Map convMap)

      Workbook の全Sheetを対象に、テキスト変換処理を行います(XSLX限定)。 この処理は、#saveFile( File ) の直前に行うのがよいでしょう。 #activeWorkbook( boolean ) との順番は構いません。 ・シート名の一覧をピックアップします。 ・セル値を、セル単位にピックアップします。 ・オブジェクト文字列を、改行単位にピックアップし、結果を合成します。 ここでは、内部的に、TextConverterインターフェースを作成して処理します。
      パラメータ:
        `convMap` - 変換対象を管理するMapオブジェクト
      関連項目:
        `textConverter( TextConverter )`
      変更履歴:

        6.2.4.2 (2015/05/29) テキスト変換処理
        6.3.1.0 (2015/06/28) TextConverterに、引数(cmnt)を追加
        6.3.9.0 (2015/11/06) Java 8 ラムダ式に変更

    - #### textConverter

          public void textConverter(TextConverter conv)

      Workbook の全Sheetを対象に、テキスト変換処理を行います(XSLX限定)。 この処理は、#saveFile( File ) の直前に行うのがよいでしょう。 #activeWorkbook( boolean ) との順番は構いません。 ・シート名の一覧をピックアップします。 ・セル値を、セル単位内の改行単位にピックアップし、結果を合成ます。 ・オブジェクト文字列を、改行単位にピックアップし、結果を合成します。 ここでは、シート名、セルテキスト、SimpleShapeオブジェクトのテキストを input に、TextConverterインターフェース の change メソッドを呼び出します。 戻り値が、null でないなら、元のデータと置き換えます。 戻り値が、null の場合は、そのまま読み飛ばします。(なにもしません) EXCELへの書き戻しが発生しますので、万一、ファイル破損で、開けなくなる場合を 想定して、バックアップファイルは、各自で準備してください。
      パラメータ:
        `conv` - TextConverterインターフェース
      関連項目:
        `textConverter( Map )`
      変更履歴:

        6.2.4.2 (2015/05/29) テキスト変換処理
        6.2.5.0 (2015/06/05) xsl形式のオブジェクト取得…はできなかった。
        6.3.1.0 (2015/06/28) TextConverterに、引数(cmnt)を追加
        6.3.9.0 (2015/11/06) セルに値をセットするときに、セルタイプを考慮する。

    - #### sheetSelected

          public void sheetSelected(boolean isSelect)

      現在のシートを選択済み(true)か、非選択済み(false)に設定します。 通常は、シートは、先頭シート以外は、非選択状態になっています。 シートを選択済みにすることで、印刷範囲を指定する事ができます。
      パラメータ:
        `isSelect` - true:シート選択/false:非選択
      変更履歴:

        6.3.9.0 (2015/11/06) 新規追加

    - #### sheetCopy

          public void sheetCopy(TextConverter conv,
                                String shtName)

      Workbook の雛形シートのTextConverter した、新しいSheetを作成します。 正確には、 １．雛形シートを、コピーして、新しいSheet(shtName)を、作成します。 ２．雛形シートが指定されていない場合は、一番最後のシートをコピーします。 ２．そのシートに対して、TextConverter を行い、文字列変換します。
      パラメータ:
        `conv` - TextConverterインターフェース
        `shtName` - シート名
      関連項目:
        `textConverter( Map )`
      変更履歴:

        6.3.9.0 (2015/11/06) 新規追加
        6.5.0.0 (2016/09/30) poi-3.15 対応(Cell.CELL_TYPE_XXXX → CellType.XXXX)

    - #### getSheetNames

          public String[] getSheetNames()

      シート一覧を、内部の Workbook から取得します。 取得元が、Workbook なので、xls , xlsx どちらの形式でも取り出せます。 EXCEL上のシート名を、配列で返します。
      戻り値:
        シート名の配列
      関連項目:
        `POIUtil.getSheetNames( Workbook )`
      変更履歴:

        6.2.6.0 (2015/06/19) 新規作成

    - #### getNames

          public String[] getNames()

      名前定義一覧を内部の Workbook から取得します。 EXCEL上に定義された名前を、配列で返します。 ここでは、名前とFormulaをタブで連結した文字列を配列で返します。 Name オブジェクトを削除すると、EXCELが開かなくなったりするので、 取りあえず一覧を作成して、手動で削除してください。 なお、名前定義には、非表示というのがありますので、ご注意ください。
      戻り値:
        名前定義(名前+TAB+Formula)の配列
      関連項目:
        `POIUtil.getNames( Workbook )`
      変更履歴:

        6.2.6.0 (2015/06/19) 新規作成

      このメソッドは、nullを返しません

    - #### getStyleNames

          public String[] getStyleNames()

      書式のスタイル一覧を内部の Workbook から取得します。 EXCEL上に定義された書式のスタイルを、配列で返します。 書式のスタイルの名称は、CellStyle にメソッドが定義されていません。 実クラスである HSSFCellStyle にキャストして使用する 必要があります。(XSSFCellStyle にも名称を取得するメソッドがありません。) ※ EXCEL2010 ホームタブ→セルのスタイル は、一つづつしか削除できません。 マクロは、開発タブ→Visual Basic で、挿入→標準モジュール を開き テキストを張り付けてください。 実行は、開発タブ→マクロ で、マクロ名を選択して、実行します。 最後は、削除してください。
      戻り値:
        書式のスタイル一覧
      関連項目:
        `POIUtil.getStyleNames( Workbook )`
      変更履歴:

        6.2.6.0 (2015/06/19) 新規作成

      このメソッドは、nullを返しません

    - #### main

          public static void main(String[] args)

      アプリケーションのサンプルです。 Usage: java org.opengion.fukurou.model.ExcelModel 入力ファイル名 [出力ファイル名] ・・・ 通常は標準出力に行単位に、セルをタブ区切り出力します。 出力ファイル名 を指定すると、EXCEL ファイルとしてセーブし直します。 その場合は、以下のパラメータも使用できます。 -CS CellStyleを 設定します。 -AS useAutoCellSizeを 設定します。 -FN=*** FontNameを 設定します。 -FP=** FontPointを 設定します。 -IMG 画像ファイルを挿入します。(-IMG 画像ファイル名 シート番号 行 列)をスペース区切りで続けます。
      パラメータ:
        `args` - コマンド引数配列
      変更履歴:

        6.0.2.0 (2014/09/19) 新規作成

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.