org.opengion.fukurou.model

## クラス ExcelReaderEvent

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

-     public class ExcelReaderEvent
      extends Object

       EXCELファイルを、イベント方式に準拠して、テキストとして読み込み処理を行います。
       ExcelReaderEventイベントは、openGion形式のファイル読み取りに準拠した方法をサポートします。
       ※ openGion形式のEXCELファイルとは、#NAME 列に、カラム名があり、#で始まる
          レコードは、コメントとして判断し、読み飛ばす処理の事です。

       このイベントクラスは、サブクラスを作成し、ExcelReader_HSSF、ExcelReader_XSSF、
       ExcelReader_SS の excelReader メソッドの引数に指定します。
       HSSF,XSSF は、イベントモデルで処理します。SS は、DOMモデルですが、(.xls/.xlsx)の
       両方をサポートします。
       実際は、POIUtil#excelReader( String , ExcelReaderEvent ) を使用すれば、拡張子に応じて
       使用するクラスを選択します。

  変更履歴:

    6.0.3.0 (2014/11/13) 新規作成
    6.2.0.0 (2015/01/30) パッケージ変更(util → model)

  機能分類
    ファイル入力
  バージョン
    6.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK7.0,

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

    コンストラクタ
    コンストラクタと説明
    `ExcelReaderEvent()`

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

    All Methods Instance Methods Concrete Methods
    修飾子とタイプ | メソッドと説明
    --- | ---
    `void` | `columnNames(String[] names)` カラム名配列がそろった段階で、イベントが発生します。
    `void` | `endSheet(int shtNo)` シートの読み取り終了時にイベントが発生します。
    `boolean` | `isNameSet()` カラム名配列が、設定されたかどうか、返します。
    `boolean` | `isSkip(int rowNo)` rowNo を元に、この行をスキップするかどうか判定のイベントが発生します。
    `void` | `setNames(String clms, boolean useNumber)` 外部からCSV形式のカラム名文字列を設定します。
    `void` | `setSheetBreak(boolean flag)` このシートの以降のデータを読み飛ばすかどうかを指定します(初期値:false)。
    `void` | `setSheetConstData(String constKeys, String constAdrs)` 固定値となるカラム名(CSV形式)と、constAdrs 固定値となるアドレス(行-列,行-列,・・・)を設定します。
    `void` | `setSkipRowCount(int count)` データの読み飛ばし件数を設定します。
    `void` | `sheetSize(int size)` シート数のイベントが発生します。
    `boolean` | `startFile(File filNm)` ファイルの読み取り開始時にイベントが発生します。
    `boolean` | `startSheet(String shtNm, int shtNo)` シートの読み取り開始時にイベントが発生します。
    `boolean` | `value(String val, int rowNo, int colNo)` 読み取り状態の時に、rowNo,colNo にあるセルの値を引数にイベントが発生します。
    `void` | `values(String[] vals, int rowNo)` row にあるセルのオブジェクト値がそろった段階で、イベントが発生します。

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

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

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

    - #### ExcelReaderEvent

          public ExcelReaderEvent()

  - ### メソッドの詳細

    - #### startFile

          public boolean startFile(File filNm)

      ファイルの読み取り開始時にイベントが発生します。 新しいファイルの読み取り開始毎に、１回呼ばれます。 戻り値が、true の場合は、そのファイルの読み取りを継続します。 false の場合は、そのファイルの読み取りは行いません。 初期実装では、固定値設定処理を行っていますので、オーバーライドする場合は、 super.startFile(String) してください。 初期実装では、true を返します。
      パラメータ:
        `filNm` - ファイルオブジェクト
      戻り値:
        読取継続するか [true:継続/false:読取らない]
      変更履歴:

        6.2.0.0 (2015/01/30) 新規作成

    - #### startSheet

          public boolean startSheet(String shtNm,
                                    int shtNo)

      シートの読み取り開始時にイベントが発生します。 新しいシートの読み取り開始毎に、１回呼ばれます。 戻り値が、true の場合は、そのシートの読み取りを継続します。 false の場合は、そのシートの読み取りは行わず、次のシートまで イベントは発行されません。 初期実装では、固定値設定処理を行っていますので、オーバーライドする場合は、 super.startSheet(String,int) してください。 初期実装では、true を返します。
      パラメータ:
        `shtNm` - シート名
        `shtNo` - シート番号(0～)
      戻り値:
        読取継続するか [true:継続/false:読取らない]
      変更履歴:

        6.0.3.0 (2014/11/13) 新規作成

    - #### endSheet

          public void endSheet(int shtNo)

      シートの読み取り終了時にイベントが発生します。 #columnNames( String[] ) や、#values( String[] ,int ) などは、行の処理が完了した時点で イベントが呼ばれるため、一番最後のレコードの終了条件が判りません。 そこで、このイベントを呼ぶことで、シートの終了(=最終行の終了)処理を行うことができます。 引数のシート番号は、参考情報で、#startSheet( String,int ) で呼ばれたシート番号と 比較できるようにしています。 初期実装では、固定値設定処理を行っていますので、オーバーライドする場合は、 super.endSheet(int) してください。
      パラメータ:
        `shtNo` - シート番号(0～)
      変更履歴:

        6.0.3.0 (2014/11/13) 新規作成
        6.1.0.0 (2014/12/26) シートブレイク処理追加

    - #### value

          public boolean value(String val,
                               int rowNo,
                               int colNo)

      読み取り状態の時に、rowNo,colNo にあるセルの値を引数にイベントが発生します。 戻り値が、true の場合は、その行の読み取りを継続します。 false の場合は、その行の読み取りは行わず、次の行まで イベントは発行されません。 openGion での標準的な処理は、colNo==0 の時に、val の先頭が、# で 始まる場合は、その行はスキップします。 ここでの return は、#isSkip( int ) と逆になりますので、ご注意ください。 初期実装では、#NAME処理、行スキップ、行終了処理等を実行します。 オーバーライドする場合は、super.value(String,int,int) してください。
      パラメータ:
        `val` - 文字列値
        `rowNo` - 行番号(0～)
        `colNo` - 列番号(0～)
      戻り値:
        読み取りするかどうか(true:読み取りする/false:読み取りしない)
      関連項目:
        `isSkip( int )`
      変更履歴:

        6.0.3.0 (2014/11/13) 新規作成

    - #### isSkip

          public boolean isSkip(int rowNo)

      rowNo を元に、この行をスキップするかどうか判定のイベントが発生します。 ※ この処理は、行が新しくなると、false が返ります。つまり、カラムの値を求める イベントやループの直前に入れることで、同一カラム処理のループ処理を 短縮するのが狙いです。 引数から、行のループに入れてしまいそうですが、行列のループに入れてください。 戻り値が、true の場合は、その行の読み取りをスキップします。 false の場合は、読み取り処理を継続します。 スキップ中は、行に関するイベントは発行されません。 値(val)を求める前に、行情報を入手し、スキップ中の現在行と同じ場合に、スキップ(=true)と判定します。 スキップ中かどうかは、#value( String,int,int ) で、判定します。 初期実装では、スキップ中 かつ 現在行と同じ行の場合、または、シートブレーク中の場合に、true を返します。
      パラメータ:
        `rowNo` - 行番号(0～)
      戻り値:
        スキップするかどうか(true:スキップする/false:スキップしない)
      関連項目:
        `value( String,int,int )`
      変更履歴:

        6.0.3.0 (2014/11/13) 新規作成
        6.1.0.0 (2014/12/26) シートブレイク処理追加

    - #### sheetSize

          public void sheetSize(int size)

      シート数のイベントが発生します。 処理の開始前に、シート数のイベントが発生します。 これを元に、処理するシート番号の選別が可能です。 初期実装は、何もありません。
      パラメータ:
        `size` - シート数
      変更履歴:

        6.1.0.0 (2014/12/26) シートの数のイベント

    - #### columnNames

          public void columnNames(String[] names)

      カラム名配列がそろった段階で、イベントが発生します。 openGion での標準的な処理は、colNo==0 の時に、val の先頭が、#NAME で始まるレコードを、名前配列として認識します。 #value( String,int,int ) で、この #NAME だけは、継続処理されます。 その上で、#NAME レコードが終了した時点で、カラム名配列が完成するので そこで初めて、このメソッドが呼ばれます。 初期実装は、何もありません。
      パラメータ:
        `names` - カラム名配列(可変長引数)
      関連項目:
        `value( String,int,int )`
      変更履歴:

        6.0.3.0 (2014/11/13) 新規作成

    - #### values

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

      row にあるセルのオブジェクト値がそろった段階で、イベントが発生します。 初期実装は、何もありません。
      パラメータ:
        `vals` - 文字列値の１行分の配列
        `rowNo` - 行番号(0～)
      変更履歴:

        6.0.3.0 (2014/11/13) 新規作成

    - #### setNames

          public final void setNames(String clms,
                                     boolean useNumber)

      外部からCSV形式のカラム名文字列を設定します。 カラム名配列を、#NAME で始まるレコードではなく、外部から指定します。 ここで設定した場合、#columnNames( String[] )イベントも発生します。 null か、長さゼロのカラム名は、設定されません。
      パラメータ:
        `clms` - CSV形式のカラム名文字列
        `useNumber` - 行番号情報 [true:使用している/false:していない]
      関連項目:
        `columnNames( String[] )`
      変更履歴:

        6.1.0.0 (2014/12/26) カラム名配列設定の対応

    - #### isNameSet

          public final boolean isNameSet()

      カラム名配列が、設定されたかどうか、返します。 カラム名配列は、#NAME で始まるレコードか、#setNames( String,boolean )メソッドを 使用して、外部から指定します。 カラム名配列が、見つからない場合、データもセットされていない可能性がある為、 ここで、判定します。
      戻り値:
        カラム名配列が、設定されたかどうか(true:設定済み/false:未設定)
      関連項目:
        `setNames( String,boolean )`
      変更履歴:

        6.1.0.0 (2014/12/26) カラム名配列設定の対応

    - #### setSheetBreak

          public void setSheetBreak(boolean flag)

      このシートの以降のデータを読み飛ばすかどうかを指定します(初期値:false)。 データを読み込む途中で、それ以降のデータを読み込む必要がなくなった場合に、 true に設定すると、以降のデータを今のシートが終了するまで、スキップします。 例えば、読み込むべき必須カラムで判定する、nullBreakClm 機能を実現できます。 初期値は、ここで設定した場合、#columnNames( String[] )イベントは発生しません。 引数が、false:読み飛ばさない です。
      パラメータ:
        `flag` - このシートの以降のデータを読み飛ばすかどうか[true:読み飛ばす/false:読み飛ばさない]
      関連項目:
        `isSkip( int )`
      変更履歴:

        6.1.0.0 (2014/12/26) シートブレイク処理追加

    - #### setSkipRowCount

          public void setSkipRowCount(int count)

      データの読み飛ばし件数を設定します。 EXCELのデータの読み始めの行を指定します。 ファイルの先頭行が、０行としてカウントしますので、設定値は、読み飛ばす 件数になります。(１と指定すると、１件読み飛ばし、２行目から読み込みます。) 読み飛ばしは、コメント行などは、無視しますので、実際の行数分読み飛ばします。 ＃NAME属性や、columns 属性は、有効です。
      パラメータ:
        `count` - 読み始めの初期値(0なら、読み飛ばしなし)
      変更履歴:

        6.1.0.0 (2014/12/26) Excel関係改善

    - #### setSheetConstData

          public void setSheetConstData(String constKeys,
                                        String constAdrs)

      固定値となるカラム名(CSV形式)と、constAdrs 固定値となるアドレス(行-列,行-列,・・・)を設定します。 アドレスは、EXCEL上の行-列をCSV形式で指定します。 行列は、EXCELオブジェクトに準拠するため、０から始まる整数です。 0-0 ⇒ A1 , 1-0 ⇒ A2 , 0-1 ⇒ B1 になります。 これにより、シートの一か所に書かれている情報を、DBTableModel のカラムに固定値として 設定することができます。 例として、DB定義書で、テーブル名をシートの全レコードに設定したい場合などに使います。 このメソッドは、isExcel() == true の場合のみ利用されます。 5.7.6.3 (2014/05/23) より、 ①EXCEL表記に準拠した、A1,A2,B1 の記述も処理できるように対応します。 なお、A1,A2,B1 の記述は、必ず、英字1文字＋数字 にしてください。(A～Zまで) ②処理中のEXCELシート名をカラムに割り当てるために、"SHEET" という記号に対応します。 例えば、sheetConstKeys="CLM,LANG,NAME" とし、sheetConstAdrs="0-0,A2,SHEET" とすると、 NAMEカラムには、シート名を読み込むことができます。 これは、内部処理の簡素化のためです。 ちなみに、EXCELのセルに、シート名を表示させる場合の関数は、下記の様になります。 =RIGHT(CELL("filename",$A$1),LEN(CELL("filename",$A$1))-FIND("]",CELL("filename",$A$1)))
      パラメータ:
        `constKeys` - 固定値となるカラム名(CSV形式)
        `constAdrs` - 固定値となるアドレス(行-列,行-列,・・・)
      変更履歴:

        5.5.8.2 (2012/11/09) 新規追加
        5.7.6.3 (2014/05/23) EXCEL表記(A2,B1等)の対応と、特殊記号(SHEET)の対応
        6.1.0.0 (2014/12/26) カラム名配列設定の対応

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