2.1 出力されるCSVファイルの詳細
出力されるCSVファイルの詳細
1表(fo:table)要素
- CSVテキストに変換されるレイアウト要素は、表(fo:table)の中の要素のみです。
- 表の中に指定されたセル(fo:table-cell)内のテキスト要素は、CSVデータ上のフィールドに変換されます。
- 表(fo:table)要素の属性(枠線、色、配置、フォント等の情報)およびテキスト要素の属性はすべて破棄されます。
2出力されるCSVデータ
- CSVフィールドはカンマ文字','(0x2C) で区切られます。
- CSVレコードは改行コードで区切られます。デフォルトはCR+LF(0x0D0x0A)です。
- CSVフィールドの値に特殊文字が含まれる場合は値全体がダブルクォート文字'"'(0x22)で囲まれます。 その際値に含まれるダブルクォート文字は2つの連続するダブルクォート文字'""'(0x220x22)に変換します。
【特殊文字】
カンマ文字 ','(0x2C)
ダブルクォート文字 '"'(0x22)
改行コード CR (0x0D)
改行コード LF (0x0A)
- 改行コードCRは全てLFとして出力されます。
- CSVフィールド数は全CSVレコードにおいて同一です。
- 出力時に他の<fo:table>に比べてCSVフィールドが少ない場合は空のCSVフィールドが追加されます。
- CSVテキストに変換されるレイアウト要素は、表(fo:table)要素のみです。
- 表内に指定されたセル(fo:table-cell)は、CSVデータ上のフィールドに変換されます。
- セル内のサポートされる要素は、<Label>や<multi-text>などのテキスト要素のみです。
- 図形要素は出力されません。また、表(fo:table)外に配置されたテキスト要素は出力されません。
- 表(fo:table)要素の属性(枠線、色、配置、フォント等の情報)はすべて破棄されます。
3出力されるCSVのフィールド数
CSVのフィールド数(1行に含まれるカンマで区切られたデータ数)は1度に出力されるCSVデータの中の最大フィールド数に全て統一されます。
最大フィールド数に満たないレコードは空の値で埋められます。
値がないフィールドと長さ0の文字列の値を持つフィールドはどちらも空のCSVフィールドとして出力され区別ができないのでご注意ください。
あらかじめ使用頻度の低い文字を入れておくなどの処理をして区別してください。
4識別用フィールド
単一のCSVファイルへ複数の<fo:table>のコンポーネントが出力されます。
各CSVレコードがどの<fo:table>のどの<fo:table-row>に対応するものかを識別可能にするため、CSVレコードの第1CSVフィールドおよび第2CSVフィールドとしてtable名とrow名を付加します。
<fo:table>のコンポーネントは第3CSVフィールド以降に出力されます。CSVフィールド数は行あたりセル数の最大数+2となります。table名とrow名は<fo:table>および<fo:table-row>のName=属性の値です。
一つの<fo:table>内でもヘッダー行、フッター行、明細行、小計行、合計行など多様な<fo:table-row>が含まれますが、Name=属性をつけることにより識別可能となります。
CSVのフィールド数(1行に含まれるカンマで区切られたデータ数)は1度に出力されます。