XlsExportクラスでセクションレポートをExcelエクスポートした時のセルの書式設定について

文書番号 : 33989     文書種別 : 使用方法     登録日 : 2012/12/19     最終更新日 : 2014/08/20
文書を印刷する
対象製品
ActiveReports for .NET 7.0J
詳細
セクションレポートをXlsExportクラスを使用してExcel形式にエクスポートした時、出力されたExcelファイル上のセルの書式設定は、サービスパックの適用状況によって異なります。
  • Service Pack 1(7.1.7470.1)以前の場合
    出力されたExcelファイル上のセルの書式は、レポート上に出力されたデータの内容によって自動的に決定される仕様となっています。TextBoxコントロールのOutputFormatプロパティを設定しても、その内容がセルの書式に反映される訳ではありません。

    具体的には、以下のようにセルの書式が設定されます。
    レポート上の出力Excel上のセル書式
    ","(カンマ)を含んだ数値の場合通貨型
    ","(カンマ)を含まない数値の場合ユーザー定義型
    "%"を含んだ数値の場合パーセンテージ型
    上記以外標準

  • Service Pack 2(7.2.8529.1)以降の場合
    出力されたExcelファイル上のセルの書式は、対応するTextBoxコントロールのOutputFormatプロパティの設定とValueプロパティに設定されているデータの型によって自動的に決定される仕様となっています。

    TextBoxコントロールのプロパティ設定/データ型と、出力されるExcelファイル上のセルの書式設定の対応表については、こちらの資料をご覧ください。

    なお、上記資料にある通り、Valueプロパティに設定されている値のデータ型が"文字列型"の場合、OutputFormatプロパティの設定にかかわらず、Excelファイル上のセルの書式設定は、常に"文字列"になります。

    この動作を回避するには、Valueプロパティに設定されている値のデータ型を適切なデータ型に変換してください。たとえば、以下のようなコードになります。

    ◆サンプルコード(VB.NET)
    Private Sub Detail_Format(sender As Object, e As EventArgs) Handles Detail.Format
      ' Valueプロパティに設定されている値のデータ型を変換する。
      Dim dbl As Double
      If Double.TryParse(Me.TextBox1.Value, dbl) Then
        Me.TextBox1.Value = dbl
      End If
    End Sub

    ◆サンプルコード(C#)
    private void detail_Format(object sender, EventArgs e)
    {
      // Valueプロパティに設定されている値のデータ型を変換する。
      Double dbl;
      if (Double.TryParse((string)this.textBox1.Value, out dbl))
      {
        this.textBox1.Value=dbl;
      }
    }



なお、XlsExportクラスを使用して、レポートをExcel形式で出力する場合に、セルの書式を任意に設定するような機能は用意されておりません。

より精度の高いExcelエクスポートが必要な場合には、XlsExportクラスではなく、SpreadBuilderクラスの使用をご検討ください。

SpreadBuilderは、レポートをExcel形式に変換するのではなく、コード上でワークシートやセルを作成する機能です。SpreadBuilderを使用する場合、NumberFormatプロパティにより、セルの書式を任意に設定できます。

SpreadBuilderの使用法については、製品ヘルプの以下の内容をご覧ください。

PowerTools ActiveReports for .NET 7.0J
 - ActiveReportsユーザーガイド
  - サンプルとチュートリアル
   - チュートリアル
    - SpreadBuilderの使用
関連情報
キーワード
問題 エクスポート