パッケージ org.opengion.plugin.io

クラス TableWriter_Excel

  • すべての実装されたインタフェース:
    TableWriter

    public class TableWriter_Excel
    extends TableWriter_Default
    ネイティブEXCELファイルの書き出しクラスです。 DefaultTableWriter を継承していますので,ラベル,名前,データの出力部のみ オーバーライドして,MIcrosoft Excelファイルの出力機能を実現しています。 出力形式は、openXML形式にも対応しています。 出力ファイルの拡張子が、.xlsならExcel2003のバイナリ形式、.xlsxならExcel2007の openXML形式で出力されます。 useCellStyle = [false/true]; データを書き込んだ範囲に罫線を入れる(true)かどうか(初期値:false) useAutoCellSize = [false/true]; セルの幅をデータの幅に自動的に合わせる(true)かどうか(初期値:false) useActiveWorkbook = [false/true]; セルの有効範囲を設定する(true)かどうか(初期値:false) pageBreakColumn = PBCLM; シートブレイクするキーとなるカラム名を指定します(このカラムの値がシート名になります) fileBreakColumn = FBCLM; ファイルブレイクするキーとなるカラム名を指定します(このカラムの値がファイル名になります) appendモードの場合は、オリジナルが雛形ファイルになります。雛形ファイルを指定した場合は、 同じファイル名で無ければエラーになります。
    変更履歴:
    4.3.4.3 (2008/12/22) 一部protected化, 4.3.6.7 (2009/05/22) ooxml形式対応, 6.0.1.2 (2014/08/08) ロジックの完全書き換え(保証もできない位・・・)
    機能分類
    ファイル出力
    バージョン
    4.0
    作成者
    Kazuhiko Hasegawa
    導入されたバージョン:
    JDK5.0,
    • コンストラクタの詳細

      • TableWriter_Excel

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

      • writeDBTable

        public void writeDBTable()
        DBTableModel から 各形式のデータを作成して,PrintWriter に書き出します。 このメソッドは、EXCEL 書き出し時に使用します。 雛形シートを使う場合は、雛形シートの後ろに追加していきます。 最後には、雛形シートとして存在しな部分は、すべて削除します。 雛形シートを使わない場合は、新規シートに追加していくことになります。 appendモードの場合は、オリジナルが雛形ファイルになります。 雛形ファイルの指定は、無効になります。
        定義:
        writeDBTable インタフェース内 TableWriter
        オーバーライド:
        writeDBTable クラス内 TableWriter_Default
        関連項目:
        isExcel()
        変更履歴:
        4.0.0.0 (2006/09/31) 新規追加, 5.1.4.0 (2010/03/01) columns 対応 、useNumber属性対応, 6.0.1.2 (2014/08/08) ロジックの完全書き換え(保証もできない位・・・), 6.0.2.0 (2014/09/19) EXCEL新機能追加, 6.1.0.0 (2014/12/26) Excel関係改善, 6.2.0.0 (2015/02/27) ファイル引数を、String → File に変更, 6.2.2.3 (2015/04/10) 雛形シートにそのままデータを書き込んでいく。シートは削除不要, 5.9.12.1 (2016/09/09) sheetOverwrite,recalcSheetNames, 6.5.0.0 (2016/09/30) セルの計算式の再計算をさせる recalcSheetNames 属性の追加。(5.9.12.1 (2016/09/09))
      • writeLabel2

        protected void writeLabel2​(DBTableModel table,
                                   PrintWriter writer)
        PrintWriter に DBTableModelのヘッダー情報を書き込みます。 ここでは、ラベル情報を同じデータを出力します。
        オーバーライド:
        writeLabel2 クラス内 AbstractTableWriter
        パラメータ:
        table - DBTableModelオブジェクト
        writer - PrintWriterオブジェクト
        変更履歴:
        7.2.6.1 (2020/07/17) H:Header(ヘッダー)属性追加。
      • writeLabel

        protected void writeLabel​(DBTableModel table,
                                  PrintWriter writer)
        PrintWriter に DBTableModelのラベル情報を書き込みます。 第一カラム目は、ラベル情報を示す "#Label" を書き込みます。 この行は、出力形式に無関係に、TableWriter.TAB_SEPARATOR で区切られます。
        オーバーライド:
        writeLabel クラス内 AbstractTableWriter
        パラメータ:
        table - DBTableModelオブジェクト
        writer - PrintWriterオブジェクト
        変更履歴:
        5.1.4.0 (2010/03/01) useNumber属性対応, 6.0.1.2 (2014/08/08) カラム飛ばしできる機能を追加, 6.2.3.0 (2015/05/01) writeKeyLabel 属性を追加, 6.2.4.2 (2015/05/29) StringUtil#tagCut(String) をラベルに適用します。
      • writeName

        protected void writeName​(DBTableModel table,
                                 PrintWriter writer)
        PrintWriter に DBTableModelの項目名情報を書き込みます。 第一カラム目は、項目名情報を示す "#Name" を書き込みます。 この行は、出力形式に無関係に、TableWriter.TAB_SEPARATOR で区切られます。
        オーバーライド:
        writeName クラス内 AbstractTableWriter
        パラメータ:
        table - DBTableModelオブジェクト
        writer - PrintWriterオブジェクト
        変更履歴:
        3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。, 5.1.4.0 (2010/03/01) useNumber属性対応, 6.0.1.2 (2014/08/08) カラム飛ばしできる機能を追加, 6.2.3.0 (2015/05/01) writeKeyLabel 属性を追加
      • writeSize

        protected void writeSize​(DBTableModel table,
                                 PrintWriter writer)
        PrintWriter に DBTableModelのサイズ情報を書き込みます。 第一カラム目は、サイズ情報を示す "#Size" を書き込みます。 この行は、出力形式に無関係に、TableWriter.TAB_SEPARATOR で区切られます。
        オーバーライド:
        writeSize クラス内 AbstractTableWriter
        パラメータ:
        table - DBTableModelオブジェクト
        writer - PrintWriterオブジェクト
        変更履歴:
        3.5.5.5 (2004/04/23) DBColumn の size と maxlength の 意味を変更, 5.1.4.0 (2010/03/01) useNumber属性対応, 6.0.1.2 (2014/08/08) カラム飛ばしできる機能を追加, 6.2.3.0 (2015/05/01) writeKeyLabel 属性を追加
      • writeClass

        protected void writeClass​(DBTableModel table,
                                  PrintWriter writer)
        PrintWriter に DBTableModelのクラス名情報を書き込みます。 第一カラム目は、サイズ情報を示す "#Class" を書き込みます。 この行は、出力形式に無関係に、TableWriter.TAB_SEPARATOR で区切られます。
        オーバーライド:
        writeClass クラス内 AbstractTableWriter
        パラメータ:
        table - DBTableModelオブジェクト
        writer - PrintWriterオブジェクト
        変更履歴:
        5.1.4.0 (2010/03/01) useNumber属性対応, 6.0.1.2 (2014/08/08) カラム飛ばしできる機能を追加, 6.2.3.0 (2015/05/01) writeKeyLabel 属性を追加
      • writeSeparator

        protected void writeSeparator​(DBTableModel table,
                                      PrintWriter writer)
        PrintWriter に セパレーターを書き込みます。 第一カラム目は、サイズ情報を示す "#----" を書き込みます。 この行は、出力形式に無関係に、TableWriter.TAB_SEPARATOR で区切られます。
        オーバーライド:
        writeSeparator クラス内 AbstractTableWriter
        パラメータ:
        table - DBTableModelオブジェクト
        writer - PrintWriterオブジェクト
        変更履歴:
        5.1.4.0 (2010/03/01) useNumber属性対応, 6.2.3.0 (2015/05/01) writeKeyLabel 属性を追加
      • writeData

        protected void writeData​(DBTableModel table,
                                 PrintWriter writer)
        PrintWriter に DBTableModelのテーブル情報を書き込みます。 このクラスでは,データを ダブルコーテーション(")で囲みます。 PrintWriter に DBTableModelのテーブル情報を書き込みます。
        オーバーライド:
        writeData クラス内 TableWriter_Default
        パラメータ:
        table - DBTableModelオブジェクト
        writer - PrintWriterオブジェクト(未使用)
        変更履歴:
        3.8.0.1 (2005/06/17) DBTypeが NVAR の場合は、元のUnicodeに戻します。, 3.8.5.3 (2006/08/07) DBType の nativeType に対応した、CELL_TYPE をセットします。, 4.1.1.2 (2008/02/28) NativeタイプをEnum型(fukurou.model.NativeType)に変更, 5.1.4.0 (2010/03/01) columns 対応, 5.1.4.0 (2010/03/01) useNumber属性対応, 5.2.1.0 (2010/10/01) useRenderer 対応, 5.7.6.3 (2014/05/23) stringOutput対応, 6.0.1.2 (2014/08/08) カラム飛ばしできる機能を追加, 6.0.4.0 (2014/11/28) データ出力用のレンデラー, 6.2.3.0 (2015/05/01) writeKeyLabel 属性を追加
      • setFilename

        public void setFilename​(String dir,
                                String fname)
        出力先ディレクトリとファイル名をセットします。 これは、EXCEL追加機能として実装されています。 雛形ファイルとの関係から、内部的に filename は合成しておきます。
        定義:
        setFilename インタフェース内 TableWriter
        オーバーライド:
        setFilename クラス内 AbstractTableWriter
        パラメータ:
        dir - 出力先ディレクトリ
        fname - 出力ファイル名
        変更履歴:
        3.5.4.3 (2004/01/05) 新規作成, 6.0.2.0 (2014/09/19) ディレクトリとファイルを分けて管理します。
      • setSheetName

        public void setSheetName​(String shtName)
        DBTableModelのデータとして読み込むときのシート名を設定します。 初期値は、"Sheet1" です。 これは、EXCEL追加機能として実装されています。
        定義:
        setSheetName インタフェース内 TableWriter
        オーバーライド:
        setSheetName クラス内 AbstractTableWriter
        パラメータ:
        shtName - シート名
        変更履歴:
        3.5.4.2 (2003/12/15) 新規追加
      • isExcel

        public boolean isExcel()
        このクラスが、EXCEL対応機能を持っているかどうかを返します。 EXCEL対応機能とは、シート名のセット、雛型参照ファイル名のセット、 書き込み元ファイルのFileオブジェクト取得などの、特殊機能です。 本来は、インターフェースを分けるべきと考えますが、taglib クラス等の 関係があり、問い合わせによる条件分岐で対応します。
        定義:
        isExcel インタフェース内 TableWriter
        オーバーライド:
        isExcel クラス内 AbstractTableWriter
        戻り値:
        EXCEL対応機能を持っているかどうか(常に true)
        変更履歴:
        3.5.4.3 (2004/01/05) 新規追加
      • setRefFilename

        public void setRefFilename​(String rfname)
        EXCEL雛型参考ファイル名をセットします。(DIR + Filename) これは、EXCEL追加機能として実装されています。
        定義:
        setRefFilename インタフェース内 TableWriter
        オーバーライド:
        setRefFilename クラス内 AbstractTableWriter
        パラメータ:
        rfname - EXCEL雛型参考ファイル名
        変更履歴:
        3.5.4.3 (2004/01/05) 新規作成
      • setSheetOverwrite

        public void setSheetOverwrite​(boolean flag)
        雛形のシート名を、そのまま使用する(true)か、新規、または、外部指定のシート名を使用する(false)を指定します。(初期値:false[外部指定のシート名を使用])。 ※ Ver5では、追記モード時に、指定シートが存在した場合は上書きします(初期値:false[上書きしない])。5.9.12.1 (2016/09/09) Ver6では、追記モード時に、雛形を指定できないため、雛形のシート名を、そのまま使用する(true)か、 新規、または、外部指定のシート名を使用する(false)を指定する属性になります。
        定義:
        setSheetOverwrite インタフェース内 TableWriter
        オーバーライド:
        setSheetOverwrite クラス内 AbstractTableWriter
        パラメータ:
        flag - 元のシート名を使用するかどうか[true:使用する/false:新規、または、外部指定のシート名を使用]
        変更履歴:
        6.5.0.0 (2016/09/30) sheetOverwrite で、雛形シートの使用時に、元のシート名を使用します。
      • setRecalcSheetName

        public void setRecalcSheetName​(String sheet)
        EXCELで、出力処理の最後にセルの計算式の再計算をさせるシート名をCSV形式で指定します。
        定義:
        setRecalcSheetName インタフェース内 TableWriter
        オーバーライド:
        setRecalcSheetName クラス内 AbstractTableWriter
        パラメータ:
        sheet - 対象シート名をCSV形式で指定
        変更履歴:
        6.5.0.0 (2016/09/30) recalcSheetName で、セル内の計算式を再計算させるシート名を指定。5.9.12.1 (2016/09/09)
      • setRefSheetName

        public void setRefSheetName​(String rshtName)
        EXCEL雛型参考ファイルのシート名を設定します。 これは、EXCEL追加機能として実装されています。 EXCELファイルを書き出す時に、雛型として参照するシート名を指定します。 これにより、複数の形式の異なるデータを順次書き出したり(appendモードを併用)する ことや、シートを指定して新規にEXCELを作成する場合にフォームを設定する事が可能になります。 初期値は、null(第一シート) です。
        定義:
        setRefSheetName インタフェース内 TableWriter
        オーバーライド:
        setRefSheetName クラス内 AbstractTableWriter
        パラメータ:
        rshtName - シート名
        変更履歴:
        3.5.4.3 (2004/01/05) 新規追加
      • setSkipRowCount

        public void setSkipRowCount​(int skipCount)
        データの書き込み開始位置を設定します(初期値:0)。 TAB区切りテキストやEXCEL等のデータの書き込みの開始位置を指定します。 属性名は、行を飛ばす処理ということで、readTable タグと同じ名称です。 ファイルの先頭行が、0行としてカウントしますので、設定値は、読み飛ばす 件数になります。(1と指定すると、1件読み飛ばし、2行目から読み込みます。) 行の読み飛ばしと、カラムの読み飛ばし(columns)、refFileURL、refFilename、 refSheetName とともに使用すれば、ある程度のレイアウト設定が可能です。 なお、この機能は、TableWriter_Excel のみに実装します。
        定義:
        setSkipRowCount インタフェース内 TableWriter
        オーバーライド:
        setSkipRowCount クラス内 AbstractTableWriter
        パラメータ:
        skipCount - 書き込み開始位置
        変更履歴:
        6.0.1.2 (2014/08/08) 新規作成
      • setFontName

        public void setFontName​(String font)
        EXCEL出力時のデフォルトフォント名を設定します。 これは、EXCEL追加機能として実装されています。 EXCELファイルを書き出す時に、デフォルトフォント名を指定します。 フォント名は、EXCELのフォント名をそのまま使用してください。 内部的に、POI の org.apache.poi.hssf.usermodel.HSSFFont#setFontName( String ) に設定されます。 雛形ファイルを使用しない場合のみ、有効です。
        定義:
        setFontName インタフェース内 TableWriter
        オーバーライド:
        setFontName クラス内 AbstractTableWriter
        パラメータ:
        font - デフォルトフォント名
        変更履歴:
        3.8.5.3 (2006/08/07) 新規追加
      • setFontPoint

        public void setFontPoint​(short point)
        EXCEL出力時のデフォルトフォントポイント数を設定します。 これは、EXCEL追加機能として実装されています。 EXCELファイルを書き出す時に、デフォルトポイント数を指定します。 内部的に、POI の org.apache.poi.hssf.usermodel.HSSFFont#setFontHeightInPoints( short ) に設定されます。 雛形ファイルを使用しない場合のみ、有効です。
        定義:
        setFontPoint インタフェース内 TableWriter
        オーバーライド:
        setFontPoint クラス内 AbstractTableWriter
        パラメータ:
        point - デフォルトフォントポイント数
        変更履歴:
        3.8.5.3 (2006/08/07) 新規追加
      • setUseCellStyle

        public void setUseCellStyle​(boolean useCellStyle)
        EXCEL出力時に、データを書き込んだ範囲に罫線を入れるかどうかを指定します。 データを書き込んでEXCELを作成しても、ノーマルのセルに値がセットされている だけなので、ある程度加工が必要です。 そこで、データのセットされたセルに罫線を入れることで、それなりのデータが 出力された感じになります。 この設定と、useAutoCellSize="true" で、セルの幅を自動調整すれば、見栄えが良くなります。 なお、この機能は、TableWriter_Excel のみに実装します。
        定義:
        setUseCellStyle インタフェース内 TableWriter
        オーバーライド:
        setUseCellStyle クラス内 AbstractTableWriter
        パラメータ:
        useCellStyle - 罫線を入れるかどうか(true:入れる/false:入れない)
        関連項目:
        setUseAutoCellSize( boolean )
        変更履歴:
        6.0.2.0 (2014/09/19) 新規作成
      • setUseAutoCellSize

        public void setUseAutoCellSize​(boolean useAutoCellSize)
        EXCEL出力時に、セルの幅をデータの幅に自動的に合わせるかどうかを指定します。 データを書き込んでEXCELを作成しても、ノーマルのセルに値がセットされている だけなので、ある程度加工が必要です。 そこで、データのセットされたセルの幅を自動調整することで、それなりのデータが 出力された感じになります。 この設定と、useCellStyle="true" で、セルの罫線を自動設定すれば、見栄えが良くなります。 なお、この機能は、TableWriter_Excel のみに実装します。
        定義:
        setUseAutoCellSize インタフェース内 TableWriter
        オーバーライド:
        setUseAutoCellSize クラス内 AbstractTableWriter
        パラメータ:
        useAutoCellSize - データの幅に自動的に合わせるかどうか(true:自動調整/false:何もしない)
        関連項目:
        setUseCellStyle( boolean )
        変更履歴:
        6.0.2.0 (2014/09/19) 新規作成
      • setUseActiveWorkbook

        public void setUseActiveWorkbook​(boolean useActiveWorkbook)
        EXCEL出力時に、セルの有効範囲を設定するかどうかを指定します。 セルの有効範囲というのは、EXCELでの 空行、空列の存在しない範囲を指します。 通常、空行でも、データとして残っている場合は、EXCELのセルオブジェクトは存在します。 ここで、useActiveWorkbook="true" とすると、空行、空列を削除します。 雛形を使用した場合は、データより多めに設定した計算などは、この処理で 削除されますので、データサイズにフィットさせることができます。 なお、この機能は、TableWriter_Excel のみに実装します。
        定義:
        setUseActiveWorkbook インタフェース内 TableWriter
        オーバーライド:
        setUseActiveWorkbook クラス内 AbstractTableWriter
        パラメータ:
        useActiveWorkbook - セルの有効範囲を設定するかどうか(true:設定する/false:そのまま)
        変更履歴:
        6.0.2.0 (2014/09/19) 新規作成
      • setPageBreakColumn

        public void setPageBreakColumn​(String pageBreakColumn)
        EXCEL出力時に、シートブレイクするキーとなるカラム名を指定します(このカラムの値がシート名になります)。 EXCEL帳票では、帳票雛形に、PAGE_BRAKE キーを設定しましたが、TableWriterでは、 メモリ上のカラムの値が変更したときに、シートブレイクさせることができます。 このカラムの値がキーブレイクすると、新しいシートに書き出し始めます。 シート名は、このカラムの値(キーブレイクする値)です。 雛形ファイルを使用する場合、雛形シートもキーブレイクに伴って、+1されます。 つまり、雛形シートとデータシートは同時に変更されます。 ただし、雛形シートは、最後の雛形シートで止まります。 これは、雛形シートにヘッダー雛形とボディ雛形を用意しておき、最初のキーブレイクで ヘッダーからボディの書き込みにチェンジするイメージで使用できます。 なお、この機能は、TableWriter_Excel のみに実装します。
        定義:
        setPageBreakColumn インタフェース内 TableWriter
        オーバーライド:
        setPageBreakColumn クラス内 AbstractTableWriter
        パラメータ:
        pageBreakColumn - シートブレイクするキーとなるカラム名を指定
        関連項目:
        setFileBreakColumn( String )
        変更履歴:
        6.0.2.0 (2014/09/19) 新規作成
      • setFileBreakColumn

        public void setFileBreakColumn​(String fileBreakColumn)
        EXCEL出力時に、ファイルブレイクするキーとなるカラム名を指定します(このカラムの値がファイル名になります)。 EXCEL帳票では、メモリ上のカラムの値が変更したときに、ファイルブレイクすることができます。 このカラムの値がキーブレイクすると、新しいファイルに書き出し始めます。 ファイル名は、このカラムの値(キーブレイクする値)+ 元の出力ファイル名の拡張子(.xlsなど)です。 この設定を使用する場合は、出力ファイル名は無視されますが、拡張子だけは使用されます。 雛形ファイルを使用する場合、雛形ファイルもキーブレイクに伴って、再利用されます。 例えば、pageBreakColumn と併用する場合、キーブレイクで雛形シートも最初から適用になります。 なお、この機能は、TableWriter_Excel のみに実装します。
        定義:
        setFileBreakColumn インタフェース内 TableWriter
        オーバーライド:
        setFileBreakColumn クラス内 AbstractTableWriter
        パラメータ:
        fileBreakColumn - ファイルブレイクするキーとなるカラム名を指定
        関連項目:
        setPageBreakColumn( String )
        変更履歴:
        6.0.2.0 (2014/09/19) 新規作成
      • setHyperLinkColumn

        public void setHyperLinkColumn​(String hyperLinkColumn)
        EXCEL出力時に、Hyperlinkを作成するキーとなるカラム名と値となるカラム名を指定します。 ここで、作成するハイパーリンクは、EXCELのシートに対するハイパーリンクです。 それ以外のリンク(本当のURLやファイル等)のリンクは(今は)作成できません。 ハイパーリンクを作成するには、①作成するカラム と ②作成する値 が必要です。 このメソッドで設定するのは、「①:②」という形式でカラム名を指定します。 ②がなければ、①と同じとします。 ②の値のシートの存在有無は、無視します。ハイパーリンクを作成するシートを作成する前に ハイパーリンクを作成するケースが存在します。 (例えば、各シートへのリンクを持った一覧を作成してから、明細の各シートを作成する様なケース) なお、この機能は、TableWriter_Excel のみに実装します。
        定義:
        setHyperLinkColumn インタフェース内 TableWriter
        オーバーライド:
        setHyperLinkColumn クラス内 AbstractTableWriter
        パラメータ:
        hyperLinkColumn - Hyperlinkを作成するキーとなるカラム名と値となるカラム名を指定
        変更履歴:
        6.0.2.0 (2014/09/19) 新規作成
      • setAddTitleSheet

        public void setAddTitleSheet​(String sheetName)
        EXCEL出力時に、Sheet一覧を先頭Sheetに作成する場合のSheet名を指定します。 これは、Workbook に含まれる Sheet 一覧を作成する場合に、利用可能です。 なお、この機能は、TableWriter_Excel のみに実装します。
        定義:
        setAddTitleSheet インタフェース内 TableWriter
        オーバーライド:
        setAddTitleSheet クラス内 AbstractTableWriter
        パラメータ:
        sheetName - EXCELファイルのシート名
        変更履歴:
        6.0.2.0 (2014/09/19) 新規作成