3-1-1-2 直接出力方式

直接出力方式は、テンプレートExcelファイルを使用せずに印刷データを直接Excelファイルへ出力する方式です。SVF実行部でExcelファイルを生成して印刷データを出力します。

XML様式ファイルの作成

直接出力方式でのXML様式ファイルは、SVFX-Designerのグリッドを使用して作成します。SVFX-Designer上のグリッドのマス目とExcelのセルが対応し、グリッドのマス目と同じ位置のセルに出力されます。グリッド設定の[アイテムの配置位置]を「グリッド位置のみ」に設定することで、意図しないセル位置に出力されることを防止できます。
また、フィールドのコメント欄に行の高さや列の幅を指定したり、Excelの計算式や関数を指定して出力することもできます(Service Pack 2で対応)。指定方法に関しては、「行の高さや列の幅を指定する」、「Excelの計算式や関数を指定する」を参照してください。


XML様式ファイル作成例

行の高さや列の幅を指定する(Service Pack 2で対応)

行の高さや列の幅を指定するには、フィールドのコメント欄に、以下のように入力します。

指定する値 コメントの記述 説明 指定例
行の高さ CELLHEIGHT=n nに行の高さをポイントで指定します。 CELLHEIGHT=100
列の幅 CELLWIDTH=n nに列の幅をポイントで指定します。 CELLWIDTH=200
行の高さ、列の幅 CELLHEIGHT=n CELLWIDTH=n 同時に指定する場合は、半角スペースで区切って指定します。 CELLHEIGHT=100 CELLWIDTH=200


フィールドのコメントに行の高さと列の幅を指定した例

注意
  • 行の高さや列の幅を指定した場合、設計レイアウトとは異なる出力になります。指定した値によっては、ページ内に収まらない場合もありますので、注意して値を指定してください。
  • 行の高さや列の幅を指定したフィールドにデータが出力されない場合、指定した値は適用されません。空白フィールドに指定した値を適用する場合は、[空白フィールドの出力モード]を [出力する]に設定してください。

Excelの計算式や関数を指定する(Service Pack 2で対応)

Excelの計算式や関数を指定するには、フィールドのコメント欄に、以下のように入力します。

FUNCTION=<Excelの計算式や関数>


フィールドのコメントにExcelの数式を指定した例

<Excelの計算式や関数>に指定した文字列がExcelの数式として設定されます。
<Excelの計算式や関数>で使用するセルの指定は、Excelのセル参照を直接指定する方法と、XML様式ファイルのフィールド名を指定する方法が可能です。
サブフォームのレコード上のフィールドや繰り返しフィールドで指定すると、そのフィールドが展開されるすべてのセルに対して数式が適用されます。

参考

セル参照は、Excelのワークシートでセルの位置を表す座標です。例えば、「列B」と「行3」が交わる位置のセル参照は「B3」です。

Excelのセル参照を直接指定する

あらかじめ、該当フィールドの出力されるセル位置が分かる場合に使用します。
「FUNCTION=」以降の文字列が、Excelの数式として該当セルに設定されます。

FUNCTION=A1*B1/C1
FUNCTION=SUM(A1:B1)
XML様式ファイルのフィールド名を指定する

指定したXML様式ファイルのフィールド名から、そのフィールドが出力されるセル位置を判断し、そのフィールド名をExcelのセル参照へ置換して、Excelの数式として該当セルに設定されます。
指定するフィールドが、レコード内や繰り返しフィールドに設計している場合は、出力される位置が可変となります。このため、指定したフィールド名は、出力された行数分のセル参照の配列へ置換されます。
フィールド名は、[]で囲んで指定します。

FUNCTION=[Field1]*[Field2]/[Field3]
FUNCTION=SUM([Field1]:[Field2])


[フィールド名]に指定したフィールドの設計位置により、以下のように設定されます。

  • 固定フィールド(繰り返しフィールドやレコード領域ではないフィールド)
    該当フィールドが出力されるExcel上のセル位置に、1つのセル参照に置換されます。
  • 可変フィールド(繰り返しフィールドやレコード領域のフィールド)
    • 固定フィールドからの参照の場合
      出力された明細行数分のセル参照の配列に置換されます。

    • 同じ可変行からの参照の場合
      参照元と同一明細行にあるセルのみ参照するように、1つのセル参照に置換されます。

    • 異なる可変行からの参照の場合
      出力された明細行数分のセル参照の配列に置換されます。

注意
  • 空白フィールドの出力モード]を [出力する]に設定してください。

  • コメント欄を利用する他の機能(FONTSIZEやCELLHEIGHTなど)と併用する場合は、半角スペースで区切り、最後尾に指定してください。
  • 引数として配列が指定できる関数以外は、[フィールド名]に可変フィールドを指定しないでください。
    例えば、ExcelのCHAR()関数などは引数を一つのみ指定できますが、可変フィールドを引数に指定した場合、Excelファイルを開くとエラー値(#VALUE!)で表示されます。
  • セル参照は1ページ内でのみ有効になります。ページを跨るセル参照はできません。
    例えば、2ページの明細行を出力し、2ページ目に、FUNCTION=SUM([フィールド名])にて合計を印字する場合、2ページ目に出力された明細行のみが統計処理の対象データとして扱われます。
  • 本機能で設定するExcelのSUMなどの統計関数は、SVFのレポートライターモードの改ページやキーブレイクなどとは連動しません。
    改ページ単位やキーブレイク単位などの制御で、統計処理をする場合は、SVFの統計関数を利用してください。
  • 本機能で使用できるExcel関数は、Apache POIに依存します。Apache POIでサポートされていないExcel関数を指定した場合には、例外が発生します。また、Excelファイルを開いたときのExcel関数の処理はExcelの仕様に依存します。使用できる関数は次のとおりです。
    ABS、ACOS、ACOSH、ADDRESS、AND、ASIN、ASINH、ATAN、ATAN2、ATANH、AVEDEV、AVERAGE、CEILING、CHAR、CHOOSE、CLEAN、COLUMN、COLUMNS、COMBIN、CONCATENATE、COS、COSH、COUNT、COUNTA、COUNTBLANK、COUNTIF、DATE、DAY、DAYS360、DEGREES、DEVSQ、DOLLAR、ERROR.TYPE、EVEN、EXACT、EXP、FACT、FALSE、FIND、FLOOR、FV、HLOOKUP、HOUR、HYPERLINK、IF、INDEX、INDIRECT、INT、IRR、ISBLANK、ISERROR、ISEVEN、ISLOGICAL、ISNA、ISNONTEXT、ISNUMBER、ISODD、ISREF、ISTEXT、LARGE、LEFT、LEN、LN、LOG、LOG10、LOOKUP、LOWER、MATCH、MAX、MAXA、MEDIAN、MID、MIN、MINA、MINUTE、MOD、MODE、MONTH、MROUND、NA、NETWORKDAYS、NOT、NOW、NPER、NPV、ODD、OFFSET、OR、PI、PMT、POISSON、POWER、PRODUCT、PV、RADIANS、RAND、RANDBETWEEN、RANK、RATE、REPLACE、RIGHT、ROUND、ROUNDDOWN、ROUNDUP、ROW、ROWS、SEARCH、SECOND、SIGN、SIN、SINH、SMALL、SQRT、STDEV、SUBSTITUTE、SUBTOTAL、SUM、SUMIF、SUMIFS、SUMPRODUCT、SUMSQ、SUMX2MY2、SUMX2PY2、SUMXMY2、T、TAN、TANH、TEXT、TIME、TODAY、TRIM、TRUE、TRUNC、UPPER、VALUE、VAR、VARP、VLOOKUP、WEEKDAY、WORKDAY、YEAR、YEARFRAC

XML様式ファイルを作成する上での留意点

XML様式ファイルを作成する上での留意点は次のとおりです。

  • フィールド桁数について
    SVF環境設定の[セルの結合]が「結合する」の場合、フィールドの桁数分、セルが結合されます。

  • フィールドのデータ型について
    フィールドのデータ型によって、セルのデータ型が「数値型」か「文字型」かが決定されます。ただし、固定文字はすべて「文字型」として出力されます。
  • 文字列の出力について
    SVFX-Designerで設計された文字列の位置とセル上に出力された文字列とでは、同じフォントや文字サイズを使用していても、文字列の終端位置は完全には一致しません。特にボールドを使用した場合、SVFX-Designer上では終端位置は変わりませんが、Microsoft Excelでは文字間が広く取られるため、終端位置が大きくずれます。そのため、セルを結合したい場合は、フィールド桁数を長めに調整するなどの措置が必要です。
  • 編集スタイル
    SVF環境設定の[セルの結合]が「結合する」の場合に有効です。

  • 編集式
    数値フィールドの場合で、かつ編集式にFORMAT関数を使用している場合、SVF環境設定の[編集式の出力モード]の指定により、Microsoft Excelの表示形式で出力できます。詳細は「3-1-2 プリンター機種設定(EXCEL)」を参照してください。

  • 線アイテム
    線アイテムはセルの枠線として出力されます。水平線、垂直線のみ使用可能です。斜線は使用できません。
  • 矩形
    線アイテムと同様、セルの枠線として出力されます。コーナー区分は直角のみ指定可能です(「カット」「」の場合も「直角」で出力されます)。

  • 線幅、線種
    線幅、線種は、Microsoft ExcelとSVFでは指定方法が異なるため、設計どおりの出力にはならない場合があります。詳細は「3-1-3 線種、網掛け、カラーの表現について」を参照してください。
  • カラー
    使用可能なカラーはMicrosoft Excelのパレットカラーで使用可能な色のみです。それ以外のカラーを指定した場合、Microsoft Excelのパレットカラーに置き換えられて出力されます。ただし、Excelブック形式の矩形の塗り込みのみ、RGB値がそのまま使用されます。

Excelブック形式を使用する場合は、必ず「3-1-5 SVF for Excelの制限事項」を確認してください。

プログラムの作成

直接出力方式では、サブフォーム、レコードを使用したレポートライターモードでの出力が可能です。Javaプログラムからの実行方法は、サンプルプログラムを参照してください。
直接出力方式で使用できるAPI関数としては、次の関数があります。API関数の詳細は、『SVF Java PRODUCTS API関数 リファレンスマニュアル』を参照してください。

 

関数名 機能
VrComout("/{XSCN ~}/") デフォルトワークシート名の指定
VrComout("/{XSHD ~}/") ワークシートのヘッダーの設定(Service Pack 2で対応)
VrComout("/{XSFT ~}/") ワークシートのフッターの設定(Service Pack 2で対応)
VrComout("/{XSSE ~}/") シート保護や書き込みパスワードを設定(Service Pack 2で対応)