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

クラス TableWriter_Excel

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

ネイティブ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) ロジックの完全書き換え(保証もできない位・・・)
機能分類
ファイル出力
導入されたバージョン:
JDK5.0,
  • コンストラクタの詳細

    • 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
      関連項目:
      変更履歴:
      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)), 8.5.4.2 (2024/01/12) PMD 7.0.0 LocalVariableNamingConventions 対応
    • 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 属性を追加, 8.5.2.0 (2023/07/14) 一部の機能廃止による修正(問合・トラブル 0200010980)
    • 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:入れない)
      関連項目:
      変更履歴:
      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:何もしない)
      関連項目:
      変更履歴:
      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 - シートブレイクするキーとなるカラム名を指定
      関連項目:
      変更履歴:
      6.0.2.0 (2014/09/19) 新規作成
    • setFileBreakColumn

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