レポートをCSV形式のテキストファイルに出力できますか?

文書番号 : 37776     文書種別 : 使用方法     登録日 : 2016/05/19     最終更新日 : 2016/05/19
文書を印刷する
対象製品
ActiveReports for .NET 9.0J
詳細
ActiveReportsには、レポートの内容をCSV形式で出力する直接的な機能は用意されておりませんが、レポートをテキスト形式で出力するTextエクスポート機能を用いることで、それに近い動作は可能です。これはページレポート、セクションレポートの両方で使用可能です。

たとえば、TextエクスポートフィルタのTextDelimiterプロパティに","(カンマ記号)を設定すれば、各データがカンマ区切りでテキストファイルに出力されます。

Textエクスポート機能の使用方法については、製品ヘルプの以下のトピックをご覧ください。

ActiveReportsユーザーガイド
 - 概念
  - エクスポート
   - エクスポートフィルタ
    - Textエクスポート
    - ページレポート/RDLレポートのエクスポート

ただし、以下のような3つの制限事項があります。

  1. 文字列を""(引用符)で囲む機能は用意されておりません。


  2. ファイルへの出力順は、データ順ではなく、ページ上の出力位置に依存します。
    レポートをTextエクスポートフィルタでエクスポートした場合、テキストファイルには、データソースのレコード順に出力されるのではなく、ページ内の描画位置が上のものから順番に出力されます。

    たとえば、複数カラム形式のレポートをエクスポートした場合に、データソースのレコード順とファイルへの出力順が一致しない事象が発生することがございます。

    これらの動作は仕様によるものであり、変更する機能・方法は用意されておりません。


  3. レポートの種類によって、出力データが存在しない箇所は区切り文字自体が出力されません。

    1. セクションレポートの場合
      TextBoxコントロールを使用する場合、データが存在しない(空文字の)項目に関しては、区切り文字のみが出力されます。

      しかしながら、Labelコントロールを使用する場合、データが存在しない項目に関しては、区切り文字自体が出力されません。Labelコントロールを使用する場合に、区切り文字のみを出力するような機能は用意されておりません。空白データを含めてCSVに出力する場合には、TextBoxコントロールを使用することをお勧めします。

      Labelコントロールを使用せざる得ない場合に、空白データの部分も一項目としてCSVファイルにエクスポートする方法としては、コントロール上に何も文字が出力されない時にダミー文字として半角スペースをセットする方法が考えられます。

      BeforePrintイベント内でLabelコントロールのTextプロパティを参照し、データが存在しない場合に、ダミー文字として半角スペースをセットしてください。(CSVファイルにもこの半角スペースは出力されます。)

      ◆サンプルコード(VB.NET)
      Private Sub Detail_BeforePrint(...) Handles Detail.BeforePrint
        If (Me.Label1.Text = "") Then
          Me.Label1.Text = " "
        End If
      End Sub

      ◆サンプルコード(C#)
      private void detail_BeforePrint(object sender, EventArgs e)
      {
        if (this.label1.Text == "")
        {
          this.label1.Text = " ";
        }
      }

    2. ページレポート/RDLレポートの場合
      ページレポート/RDLレポートの場合、データが存在しない(空文字の)項目に関して、区切り文字のみを出力するような機能は用意されておりません。

      空白データの部分も一項目としてCSVファイルにエクスポートする方法としては、コントロール上に何も文字が出力されない場合にダミー文字として半角スペースをセットする方法が考えられます。

      コントロールのValueプロパティに以下のような条件式を設定し、フィールドの値が空の場合に半角スペースが出力されるようにしてください。(CSVファイルにもこの半角スペースは出力されます。)

      =IIF (Fields!FieldName.Value="", " ", Fields!FieldName.Value)

      FieldNameには、出力したいフィールド名が入ります。
関連情報
キーワード
HowTo エクスポート