クラス ExcelFileTag

  • すべての実装されたインタフェース:
    Serializable, javax.servlet.jsp.tagext.BodyTag, javax.servlet.jsp.tagext.IterationTag, javax.servlet.jsp.tagext.JspTag, javax.servlet.jsp.tagext.Tag, javax.servlet.jsp.tagext.TryCatchFinally

    public class ExcelFileTag
    extends CommonTagSupport
    ExcelFileTag は、各種パラメータを指定して、Excelファイルの操作をおこなうタグです。 主に、ExcelModel、POIUtil の各機能をJSP上で使用できるようにしました。 入力の file1 を加工して、file2 を出力するというのが、基本パターンになります。 file1 と、file2 を同じ値に指定した場合は、上書き保存されます。 6.9.0.0 (2018/01/31) JacobUtil 廃止に伴い、toPrint、saveAs を廃止します。 X ※ (saveAs,toPrint)属性は、JACOB(Java COM Bridge)の使用が前提です。 X これは、JavaからのCOMオートメーションコンポーネント呼び出しを可能とする X JAVA-COMブリッジです。COMライブラリのネイティブな呼び出しにJNIを使います。 X JACOBは、32bitおよび64bitのJVMをサポートするX86およびx64環境で動作します。 X http://sourceforge.jp/projects/sfnet_jacob-project/ (日本語プロジェクト) X http://sourceforge.net/projects/jacob-project/ (本家) X 設定: X jacob-1.18-M2.zip をダウンロードし、 X ①jacob-1.18-M2-x64.dll または、jacob-1.18-M2-x86.dll を、 X Windowsのシステムディレクトリにコピーします。 (例:C:\Windows\System32) X ②jacob.jar を、クラスパスに登録します。 X ここでは、名称を、jacob-1.18-M2.jar に変更し、jre\lib\ext にコピーしています。
    関連項目:
    直列化された形式
    変更履歴:
    6.2.6.0 (2015/06/19) 新規作成
    機能分類
    その他部品
    形式サンプル:
    ●形式:<og:excelFile action="…" fileURL="…" ・・・ /> ●形式:<og:excelFile action="…" fileURL="…" ・・・ > lt;og:excelImageFileParam … /> </og:excelFile> ●body:あり ●Tag定義: <og:excelFile fileURL 【TAG】操作するファイルのディレクトリを指定します (初期値:FILE_URL[=filetemp/]) file1 ○【TAG】入力ファイル名を指定します(必須) file2 【TAG】出力ファイル名を指定します sheetName 【TAG】EXCELファイルを読み込むときのシート名を設定します(初期値:指定なし) sheetNos 【TAG】EXCELファイルを読み込むときのシート番号を複数設定できます(初期値:0) sheetConstKeys 【TAG】EXCELファイルを読み込むときの固定値となるカラム名(CSV形式) sheetConstAdrs 【TAG】EXCELファイルを読み込むときの固定値となるアドレス(行-列,行-列,・・・) useActiveWorkbook 【TAG】EXCEL出力時に、セルの有効範囲を設定するかどうかを指定します(初期値:false) addTitleSheet 【TAG】EXCEL出力時に、存在するSheet名一覧を作成する場合に、そのSheet名を指定します。 addImageFile 【TAG】画像ファイルを挿入します(画像ファイル名 シート番号 行 列) valueType 【TAG】sheetConstXXX,readXXXX のパラメータに登録する方法を指定します(CSV,LIST,MAP) readText 【TAG】ファイルを読み込んで、内容を 引数の変数にセットします。 readSheet 【TAG】ファイルを読み込んで、シート一覧を 引数の変数にセットします。 readName 【TAG】ファイルを読み込んで、名前一覧を 引数の変数にセットします。 readStyle 【TAG】ファイルを読み込んで、スタイル名を 引数の変数にセットします。 useConverter 【TAG】file1 のシート、セル、オブジェクトのテキストを変換します。 convFile 【TAG】useConverter=true 時に、変換対応表をファイルから読み取ります。 convMap 【TAG】useConverter=true 時に、変換対応表をMapから読み取ります。 scope 【TAG】キャッシュする場合のスコープ(request,session)を指定します(初期値:request) caseKey 【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null) 5.7.7.2 (2014/06/20) caseVal 【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null) 5.7.7.2 (2014/06/20) caseNN 【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:判定しない) 5.7.7.2 (2014/06/20) caseNull 【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:判定しない) 5.7.7.2 (2014/06/20) caseIf 【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます(初期値:判定しない) debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) /> 【廃止】6.9.0.0 (2018/01/31) 物理削除 X ※ saveAs 【廃止】file1 を指定のファイルの拡張子に合わせた変換を行って保存します(xls,xlsx,pdf)。 X ※ toPrint 【廃止】file1 を指定のプリンタに印刷します。 【追加】7.2.9.0 (2020/10/12) BODY部に excelImageFileParam を指定可能にします。 これは、addImageFile属性のタグ版で複数登録可能です。 ●使用例 ・EXCEL を読み取って、シート名の一覧の目次を、先頭シートに追加します。 <og:excelFile file1="input.xls" file2="input.xls" addTitleSheet="Title" />
    バージョン
    6.2
    作成者
    Kazuhiko Hasegawa
    導入されたバージョン:
    JDK8.0,
    • コンストラクタの詳細

      • ExcelFileTag

        public ExcelFileTag()
        デフォルトコンストラクター
        変更履歴:
        6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
    • メソッドの詳細

      • doStartTag

        public int doStartTag()
        Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
        定義:
        doStartTag インタフェース内 javax.servlet.jsp.tagext.Tag
        オーバーライド:
        doStartTag クラス内 CommonTagSupport
        戻り値:
        後続処理の指示
        変更履歴:
        7.2.9.0 (2020/10/12) ExcelImageFileParamTag から値を取り込みます。
      • doEndTag

        public int doEndTag()
        Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
        定義:
        doEndTag インタフェース内 javax.servlet.jsp.tagext.Tag
        オーバーライド:
        doEndTag クラス内 CommonTagSupport
        戻り値:
        後続処理の指示
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成, 6.3.1.0 (2015/06/28) readText の取得方法を変更する。, 6.9.0.0 (2018/01/31) JacobUtil 廃止に伴い、toPrint、saveAs を廃止します。, 7.2.9.0 (2020/10/12) ExcelImageFileParamTag から値を取り込みます。
      • release2

        protected void release2()
        タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。
        オーバーライド:
        release2 クラス内 CommonTagSupport
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成, 6.9.0.0 (2018/01/31) JacobUtil 廃止に伴い、toPrint、saveAs を廃止します。
      • setFileURL

        public void setFileURL​(String url)
        【TAG】操作するファイルのディレクトリを指定します (初期値:FILE_URL[=])。
        パラメータ:
        url - ファイルURL
        関連項目:
        SystemData.FILE_URL
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成, 6.4.2.1 (2016/02/05) URLの最後に、"/" を追加する処理を廃止。
        説明:
        この属性で指定されるディレクトリのファイルを操作します。 指定方法は、通常の fileURL 属性と同様に、先頭が、'/' (UNIX) または、2文字目が、 ":" (Windows)の場合は、指定のURLそのままのディレクトリに、そうでない場合は、 (初期値:システム定数のFILE_URL[=])。
      • setFile1

        public void setFile1​(String fname)
        【TAG】基準となるファイル名を指定します(コマンドの左辺のファイル名です)。
        パラメータ:
        fname - ファイル名1
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        コマンドの左辺のファイル名です。
      • setFile2

        public void setFile2​(String fname)
        【TAG】内部 Workbook オブジェクトをファイルに書き出します。
        パラメータ:
        fname - ファイル名2
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        この属性を指定しない場合は、ファイルに出力されません。 また、file1 と同じファイルを指定することは可能です。その場合は、 元のファイルが上書き保存されます。 Excelの形式は、ここで指定する出力ファイルの拡張子ではなく、file1で 指定したファイルの拡張子で決まります。 異なる形式の拡張子を持つファイルを指定した場合、強制的に、オープンした Workbook の形式の拡張子を追加します。 拡張子は、Excel 2007以降の形式(.xlsx)か、Excel 2003以前の形式(.xls) が指定できます。 拡張子が未設定の場合は、オープンした Workbook の形式に合わせた拡張子を付与します。
      • setSheetName

        public void setSheetName​(String sheet)
        【TAG】EXCELファイルを読み込むときのシート名を設定します(初期値:指定なし)。
        パラメータ:
        sheet - EXCELファイルのシート名
        関連項目:
        setSheetNos( String )
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        EXCELファイルを読み込む時に、シート名を指定します。 sheetNos と sheetName が同時に指定された場合は、sheetNos が優先されます。 エラーにはならないのでご注意ください。 初期値は、指定なしです。
      • setSheetNos

        public void setSheetNos​(String sheet)
        【TAG】EXCELファイルを読み込むときのシート番号を指定します(初期値:0)。
        パラメータ:
        sheet - EXCELファイルのシート番号(0から始まる)
        関連項目:
        setSheetName( String )
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        EXCEL読み込み時に複数シートをマージして取り込みます。 シート番号は、0 から始まる数字で表します。 シート番号の指定は、CSV形式で、複数指定できます。また、N-M の様にハイフンで繋げることで、 N 番から、M 番のシート範囲を一括指定可能です。また、"*" による、全シート指定が可能です。 これらの組み合わせも可能です。( 0,1,3,5-8,10-* ) ただし、"*" に関しては例外的に、一文字だけで、すべてのシートを表すか、N-* を最後に指定するかの どちらかです。途中には、"*" は、現れません。 シート番号は、重複(1,1,2,2)、逆転(3,2,1) での指定が可能です。これは、その指定順で、読み込まれます。 sheetNos と sheetName が同時に指定された場合は、sheetNos が優先されます。 エラーにはならないのでご注意ください。 初期値は、0(第一シート) です。
      • setSheetConstKeys

        public void setSheetConstKeys​(String constKeys)
        【TAG】EXCELファイルを読み込むときのシート単位の固定値を設定するためのキーをCSV形式で指定します。
        パラメータ:
        constKeys - 固定値となるキー(CSV形式)
        関連項目:
        setSheetConstAdrs( String )
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        カラム名は、CSV形式で指定します。 これにより、シートの一か所に書かれている情報を、固定値として取得することができます。 sheetConstAdrs 属性で指定したセル位置から取得した値を、sheetConstKeys で指定したキーに 設定します。 値の設定方法は、valueType 属性で指定します。
      • setSheetConstAdrs

        public void setSheetConstAdrs​(String constAdrs)
        【TAG】EXCELファイルを読み込むときのシート単位の固定値を設定するためのキーに対応するアドレスをCSV形式で指定します。
        パラメータ:
        constAdrs - 固定値となるアドレス (行-列,行-列,・・・)
        関連項目:
        setSheetConstKeys( String )
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        アドレスは、EXCEL上の行-列形式か、EXCEL表記に準拠した、A1,A2,B1形式が使用できます。 また、特殊な文字として、"SHEET" という記号が使用できます。 ①行-列形式 行列は、EXCELオブジェクトに準拠するため、0から始まる整数です。 0-0 ⇒ A1 , 1-0 ⇒ A2 , 0-1 ⇒ B1 になります。 ②EXCEL表記 EXCEL表記に準拠した、A1,A2,B1 の記述も処理できるように対応します。 なお、A1,A2,B1 の記述は、必ず、英字1文字+数字 にしてください。(A~Zまで) ③EXCELシート名をキーに割り当てるために、"SHEET" という記号に対応します。 readSheet 属性で、同等のことが出来まが、統一的に処理できるようにします。 例えば、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))) これにより、シートの一か所に書かれている情報を、固定値として取得することができます。 sheetConstAdrs 属性で指定したセル位置から取得した値を、sheetConstKeys で指定したキーに 設定します。 値の設定方法は、valueType 属性で指定します。
      • setUseActiveWorkbook

        public void setUseActiveWorkbook​(String useActWB)
        【TAG】EXCEL出力時に、セルの有効範囲を設定するかどうかを指定します(初期値:false)。
        パラメータ:
        useActWB - 有効範囲の設定 [true:する/false:しない]
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        セルの有効範囲というのは、EXCELでの 空行、空列の存在しない範囲を指します(初期値:false)。 通常、空行でも、データとして残っている場合は、EXCELのセルオブジェクトは存在します。 ここで、useActiveWorkbook="true" とすると、空行、空列を削除します。 初期値は、false:しない です。
      • setAddTitleSheet

        public void setAddTitleSheet​(String sheetName)
        【TAG】EXCEL出力時に、Sheet一覧を作成する場合のSheet名を指定します。
        パラメータ:
        sheetName - タイトルシート名
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        これは、Workbook に含まれる Sheet 一覧を作成する場合に、ここに指定した シート名で、目次を作成します。
      • setAddImageFile

        public void setAddImageFile​(String imgFile)
        【TAG】指定のシートの行・列の箇所に、イメージファイルを挿入します。
        パラメータ:
        imgFile - (画像ファイル名 シート番号 開始行 開始列 [終了行 終了列 開始セルのX軸マージン 開始セルのY軸マージン 終了セルのX軸マージン 終了セルのY軸マージン])
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        7.2.9.0 (2020/10/12) 以降は、ExcelImageFileParamTag を推奨いたします。 ここでは、セル範囲ではなく、指定の行列の箇所に、アンカーを設定して、画像ファイルを 挿入します。一応、リサイズして、元の大きさ近くに戻しますが、縦横比が変わってしまいます。 正確に挿入する場合は、セル範囲の指定と、マージンを指定しなければなりませんが、 微調整が必要です。 引数は、スペース区切りで、下記の順番で指定します。 imgFile 挿入するイメージファイル名 shtNo シート番号 row1 挿入する行(開始) col1 挿入する列(開始) [row2] 挿入する行(終了-含まず) (未指定時は、row1) [col2] 挿入する列(終了-含まず) (未指定時は、col1) [dx1 ] 開始セルのX軸座標のオフセット(ピクセル) (未指定時は、0) [dy1 ] 開始セルのY軸座標のオフセット(ピクセル) (未指定時は、0) [dx2 ] 終了セルのX軸座標のオフセット(ピクセル) (未指定時は、0) [dy2 ] 終了セルのY軸座標のオフセット(ピクセル) (未指定時は、0)
      • addImgFile

        protected void addImgFile​(String imgFile,
                                  String sheetName,
                                  int sheetNo,
                                  int rowNo,
                                  int colNo,
                                  int rowEndNo,
                                  int colEndNo,
                                  int dx1,
                                  int dy1,
                                  int dx2,
                                  int dy2)
        addImageFile属性の実際の処理を行います。
        パラメータ:
        imgFile - 挿入するイメージファイル名
        sheetName - シート名
        sheetNo - シート番号
        rowNo - 挿入する行(開始)
        colNo - 挿入する列(開始)
        rowEndNo - 挿入する行(終了-含まず)
        colEndNo - 挿入する列(終了-含まず)
        dx1 - 開始セルのX軸座標のオフセット(ピクセル)
        dy1 - 開始セルのY軸座標のオフセット(ピクセル)
        dx2 - 終了セルのX軸座標のオフセット(ピクセル)
        dy2 - 終了セルのY軸座標のオフセット(ピクセル)
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
      • setValueType

        public void setValueType​(String type)
        【TAG】sheetConstXXX,readXXXX のパラメータに登録する方法を指定します(CSV/LIST/MAP)。
        パラメータ:
        type - 保管方法(CSV/LIST/MAP)
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        キーに対して、値は複数存在する場合があります。 その値を、設定する場合の、3つの方法を指定できます。 CSV : キーに対して、値をCSV形式でセットします。valueタグや、{@XXX} で、取り出せます。 キーが複数ある場合は、個別に指定する必要があります。 LIST: キーに対して、値をListオブジェクトにセーブします。 キーが複数ある場合は、個別に指定する必要があります。 MAP : キー自体を、Mapオブジェクトに設定します。値は、CSV形式の文字列です。 初期値は、CSV です。
      • setReadText

        public void setReadText​(String read)
        【TAG】ファイルを読み込んで、内容を引数の変数にセットします。
        パラメータ:
        read - 書き込む変数名
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        EXCELのセルと、テキストボックスオブジェクトの値を取得します。 引数に、キーとなるパラメータを指定します。 テキストは、一つのキーに設定されます。 valueType 属性の指定とは無関係にパラメータに登録されます。
      • setReadSheet

        public void setReadSheet​(String read)
        【TAG】ファイルを読み込んで、シート一覧を引数の変数にセットします。
        パラメータ:
        read - 書き込む変数名
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        EXCELのシート一覧を取得します。 引数に、キーとなるパラメータを指定します。 値の設定方法は、valueType 属性で指定します。
      • setReadName

        public void setReadName​(String read)
        【TAG】ファイルを読み込んで、名前一覧を 引数の変数にセットします。
        パラメータ:
        read - 書き込む変数名
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        EXCELの名前一覧を取得します。 名前一覧に、不正な値や、他のファイルのリンク等が設定されていると、 EXCELを開くのに時間がかかる場合があります。EXCEL帳票などでは、問題になります。 そこで、この名前が不正かどうか判別するのに、名前一覧を使用します。 引数に、キーとなるパラメータを指定します。 値の設定方法は、valueType 属性で指定します。
      • setReadStyle

        public void setReadStyle​(String read)
        【TAG】ファイルを読み込んで、スタイル名を 引数の変数にセットします。
        パラメータ:
        read - 書き込む変数名
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        EXCELのスタイル名を取得します。 スタイル名に、不正な値が設定されていると、EXCELを開くのに 時間がかかる場合があります。EXCEL帳票などでは、問題になります。 そこで、このスタイル名が不正かどうか判別するのに、使用します。 引数に、キーとなるパラメータを指定します。 値の設定方法は、valueType 属性で指定します。
      • setUseConverter

        public void setUseConverter​(String useConv)
        【TAG】シート名、セル、オブジェクトのテキストを変換するかどうか指定します(初期値:false)。
        パラメータ:
        useConv - コンバータ処理を行うかどうか [true:行う/false:行わない]
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        この属性では、テキスト変換を行うかどうかを指定します。例え、convFile属性や convMap属性が指定されていても、この属性を true にしないと、変換は行われません。 また、convFile属性と、convMap属性がどちらも指定されていない場合も、実行されません。 初期値は、false:行わない です。
      • setConvFile

        public void setConvFile​(String cfile)
        【TAG】useConverter=true 時に、変換対応表をファイルから読み取ります。
        パラメータ:
        cfile - コンバータ処理の変換対応表ファイル
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        この属性は、useConverter=true を指定しないと、無視されます。 テキスト変換を行う変換対応表を、ファイルで指定します。 このテキストファイルは、変換元と変換先の文字列をタブ区切りで定義された、UTF-8ファイルです。
      • setConvMap

        public void setConvMap​(String cmap)
        【TAG】useConverter=true 時に、変換対応表をMapから読み取ります。
        パラメータ:
        cmap - コンバータ処理の変換対応表Mapの取得キー
        変更履歴:
        6.2.6.0 (2015/06/19) 新規作成
        説明:
        この属性は、useConverter=true を指定しないと、無視されます。 テキスト変換を行う変換対応表を、Mapオブジェクトで指定します。 メモリ上のMapオブジェクトの取得キーを、指定します。 スコープは、scope 属性を使います。
      • setScope

        public void setScope​(String scp)
        【TAG】キャッシュする場合のスコープ(request,session)を指定します(初期値:request)。
        オーバーライド:
        setScope クラス内 CommonTagSupport
        パラメータ:
        scp - スコープ
        関連項目:
        CommonTagSupport.getScope()
        説明:
        "request","session" が指定できます。 初期値は、 "request" です。
      • toString

        public String toString()
        このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。
        オーバーライド:
        toString クラス内 CommonTagSupport
        戻り値:
        このクラスの文字列表現
        このメソッドは、nullを返しません