クラス ExcelLayout
- java.lang.Object
-
- org.opengion.hayabusa.report.ExcelLayout
-
public class ExcelLayout extends java.lang.Object
【EXCEL取込】雛形EXCELシートの {@カラム} 解析データを管理、収集する 雛形レイアウト管理クラスです。 POIのHSSFListener などで、雛形情報を収集し、HSSFSheet などで、雛形情報のアドレス(行列)から 必要な情報を取得し、このオブジェクトに設定しておきます。 EXCELシート毎に、INSERT文と、対応する文字列配列を取り出します。- 機能分類
- 帳票システム
- 変更履歴:
- 3.8.0.0 (2005/06/07) 新規追加
- バージョン
- 4.0
- 作成者
- Kazuhiko Hasegawa
- 導入されたバージョン:
- JDK5.0,
-
-
コンストラクタの概要
コンストラクタ コンストラクタ 説明 ExcelLayout(int sheetSize)
コンストラクター 雛形の最大シート数を設定します。
-
メソッドの概要
すべてのメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 void
addData(java.lang.String clm, int edbn, java.lang.String value)
解析情報(clm,edbn)と関連付けて、データEXCELの値を設定します。void
addModel(int sheetNo, java.lang.String key, int rowNo, short colNo)
雛形EXCELの {@カラム} 解析情報を設定します。void
dataClear()
データEXCELの設定情報を初期化します。java.util.List<java.lang.String[]>
getBodyInsertData(java.lang.String systemId, int ykno, int sheetNo)
ボディ(明細)情報のINSERT用Queryに対応する、データ配列のリスト(String[] のList)を取得します。java.lang.String
getBodyInsertQuery(java.lang.String table)
ボディ(明細)情報のINSERT用Query文字列を取得します。java.lang.String[]
getHeaderInsertData(java.lang.String systemId, int ykno, int sheetNo)
ヘッダー情報のINSERT用Queryに対応する、データ配列を取得します。java.lang.String
getHeaderInsertQuery(java.lang.String table)
ヘッダー情報のINSERT用Query文字列を取得します。java.util.Iterator<ExcelLayoutData>
getLayoutDataIterator(int sheetNo, java.lang.String loopClm)
雛形EXCELの {@カラム} 解析情報(ExcelLayoutData)を配列で取得します。
-
-
-
メソッドの詳細
-
addModel
public void addModel(int sheetNo, java.lang.String key, int rowNo, short colNo)
雛形EXCELの {@カラム} 解析情報を設定します。 雛形EXCELは、HSSFListener を使用して、イベント駆動で取得します。その場合、 {@カラム}を含むセルを見つける都度、このメソッドを呼び出して、{@カラム}の 位置(行列番号)を設定します。 データEXCELからデータを読み出す場合は、ここで登録したカラムの行列より、読み込みます。 具体的には、HSSFListener#processRecord( Record )で、SSTRecord.sid の 情報をキープしておき、 LabelSSTRecord.sid 毎に、{@カラム}を含むかチェックし、含む場合に、このメソッドに 解析情報を設定します。- パラメータ:
sheetNo
- シート番号key
- 処理カラムrowNo
- 行番号colNo
- 列番号
-
getLayoutDataIterator
public java.util.Iterator<ExcelLayoutData> getLayoutDataIterator(int sheetNo, java.lang.String loopClm)
雛形EXCELの {@カラム} 解析情報(ExcelLayoutData)を配列で取得します。 雛形EXCELは、イベント処理で取り込む為、すべての処理が終了してから、このメソッドで 処理結果を取り出す必要があります。 解析情報は、ExcelLayoutData オブジェクトにシート単位に保管されています。 この ExcelLayoutData オブジェクト ひとつに、{@カラム} ひとつ、つまり、 ある特定の行列番号を持っています。 データEXCELを読取る場合、この ExcelLayoutData配列から、行列情報を取り出し、 addData メソッドで、キー情報と関連付けて登録する為に、使用します。- パラメータ:
sheetNo
- シート番号loopClm
- 繰返必須カラム(なければ通常の1対1処理)- 戻り値:
- ExcelLayoutData配列
-
addData
public void addData(java.lang.String clm, int edbn, java.lang.String value)
解析情報(clm,edbn)と関連付けて、データEXCELの値を設定します。 データEXCELは、雛形EXCELの解析情報を元に、行列番号から設定値を取り出します。 その設定値は、取りだした ExcelLayoutData の clm,edbn と関連付けて、このメソッドで登録します。 この処理は、シート毎に、初期化して使う必要があります。 初期化メソッドする場合は、dataClear() を呼び出してください。- パラメータ:
clm
- カラム名edbn
- 枝番value
- データ値- 変更履歴:
- 6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)
-
dataClear
public void dataClear()
データEXCELの設定情報を初期化します。 データEXCELと、雛形EXCELの解析情報を関連付ける処理は、シート毎に行う必要があります。 処理終了時(シート切り替え時)このメソッドを呼び出して、初期化しておく必要があります
-
getHeaderInsertQuery
public java.lang.String getHeaderInsertQuery(java.lang.String table)
ヘッダー情報のINSERT用Query文字列を取得します。 シート単位に、データEXCELより、INSERT用のQuery文字列を作成します。 この、Query は、シート単位に登録したキー情報の最大数(使用されているすべてのキー)を 元に、PreparedStatement で処理できる形の INSERT文を作成します。 シート単位に呼び出す必要があります。- パラメータ:
table
- ヘッダー情報を登録するデータベース名(HEADERDBID)- 戻り値:
- ヘッダー情報のINSERT用Query文字列
-
getBodyInsertQuery
public java.lang.String getBodyInsertQuery(java.lang.String table)
ボディ(明細)情報のINSERT用Query文字列を取得します。 シート単位に、データEXCELより、INSERT用のQuery文字列を作成します。 この、Query は、シート単位に登録したキー情報の最大数(使用されているすべてのキー)を 元に、PreparedStatement で処理できる形の INSERT文を作成します。 シート単位に呼び出す必要があります。- パラメータ:
table
- ボディ(明細)情報を登録するデータベース名(BODYDBID)- 戻り値:
- ボディ(明細)情報のINSERT用Query文字列
-
getHeaderInsertData
public java.lang.String[] getHeaderInsertData(java.lang.String systemId, int ykno, int sheetNo)
ヘッダー情報のINSERT用Queryに対応する、データ配列を取得します。 getHeaderInsertQuery( String ) で取りだした PreparedStatement に設定する値配列です。 シート単位に呼び出す必要があります。- パラメータ:
systemId
- システムID(SYSTEM_ID)ykno
- 要求番号(YKNO)sheetNo
- 登録するデータEXCELのシート番号(SHEETNO)- 戻り値:
- データ配列
- このメソッドは、nullを返しません
-
getBodyInsertData
public java.util.List<java.lang.String[]> getBodyInsertData(java.lang.String systemId, int ykno, int sheetNo)
ボディ(明細)情報のINSERT用Queryに対応する、データ配列のリスト(String[] のList)を取得します。 getHeaderInsertQuery( String ) で取りだした PreparedStatement に設定する値配列です。 シート単位に呼び出す必要があります。- パラメータ:
systemId
- システムID(SYSTEM_ID)ykno
- 要求番号(YKNO)sheetNo
- 登録するデータEXCELのシート番号(SHEETNO)- 戻り値:
- データ配列のリスト
-
-