バージョン

DataPresenter コントロールを Excel にエクスポート

このトピックでは、xamDataPresenter™ コントロールを使用して、Excel へのデータのエクスポートを実装する方法を説明します。

はじめに

DataPresenter コントロールは、 DataPresenterExcelExporter クラスを使用して、Microsoft® Excel® フォーマットでデータをエクスポートできます。DataPresenterExcelExporter クラスは、ワークブックの作成、DataPresenter 行/セルの反復およびワークシートのセル値の設定のすべての作業をカプセル化します。

DataPresenterExcelExporter クラスはビジュアル要素ではありません。このため、ウィンドウのビジュアル ツリーに追加できません。ただし、XAML で DataPresenterExcelExporter オブジェクトのインスタンスを作成する場合、ウィンドウのリソースディクショナリに追加できます。

Note
注:

DataPresenter コントロールで使用できるスタイルが多数あるため、DataPresenterExcelExporter オブジェクトは DataPresenter コントロールのスタイルを Excel にエクスポートしません。ただし、インフラジスティックスの Excel Engine オブジェクトに直接アクセスする、またはエクスポートの前にフォーマットを適用することによって、結果のワークシートをフォーマットできます。

要件

データをエクスポートできるようにするには、以下の NuGet パッケージをアプリケーションで参照する必要があります。

  • Infragistics.WPF.DataGrids

  • Infragistics.WPF.DataGrids.Excel

NuGet フィードのセットアップと NuGet パッケージの追加の詳細については、NuGet フィード ドキュメントを参照してください。

概要

エクスポート手順の概念的な概要

  1. グリッドを追加

  1. エクスポート ボタンを追加

  1. xamDataPresenter コントロールを追加

  1. コード ビハインドに using/Imports のディレクティブを追加

  1. (条件付き) Button の Click イベントのイベント ハンドラーを追加

  1. DataPresenterExcelExporter オブジェクトのインスタンスを作成

  1. エクスポート メソッドを呼び出す

  1. (条件付き) 実装を検証

手順

  1. グリッドを追加します。

2 つの RowDefinition オブジェクトがある Grid パネルをウィンドウに追加します。

XAML の場合:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition />
    </Grid.RowDefinitions>
    <!--TODO: Button コントロールを追加します-->
    <!--TODO: xamDataPresenter コントロールを追加します-->
</Grid>
  1. エクスポート ボタンを追加します。

Button コントロールを Grid パネルの最初の行に追加し、以下のように構成します。

  • ボタンの Content プロパティを Export DataPresenter に設定します。

  • ボタンの Click イベントにイベント ハンドラーを接続します。

XAML の場合:

<Button Content="Export DataPresenter" Click="Button_Click" />
  1. xamDataPresenter コントロールを追加します。

xamDataPresenter コントロールを Grid パネルの 2 番目の行に追加し、プロパティを以下のように構成します。

  • Name プロパティ - xamDataPresenter1。

  • BindToSampleData プロパティ - True。

XAML の場合:

<igDP:XamDataPresenter Name="xamDataPresenter1" BindToSampleData="True">
</igDP:XamDataPresenter>
  1. コード ビハインドに using/Imports のディレクティブを追加します。

コード ビハインドを開き、コード ビハインド内に using/Imports のディレクティブを配置すれば、メンバーの完全に記述された名前を常にタイプする必要がなくなります。コードでインスタンスを作成する代わりに、DataPresenterExcelExporter オブジェクトのインスタンスをウィンドウのリソース ディクショナリに追加したい場合には、XML 名前空間宣言を追加することが必要になります。

XAML の場合:

xmlns:igExcelExporter="http://infragistics.com/ExcelExporter"

Visual Basic の場合:

Imports Infragistics.Windows.DataPresenter.ExcelExporter
Imports Infragistics.Documents.Excel

C# の場合:

using Infragistics.Windows.DataPresenter.ExcelExporter;
using Infragistics.Documents.Excel;
  1. (条件付き) Button コントロールの Click イベントのイベント ハンドラーを追加します。

メソッド スタブが作成されていない場合には、Button コントロールの Click イベントのイベント ハンドラーを追加することが必要になります。

Visual Basic の場合:

Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
    'TODO: DataPresenterExcelExporter オブジェクトのインスタンスを作成します
    'TODO: DataPresenterExcelExporter オブジェクトの Export メソッドを呼び出します
End Sub

C# の場合:

private void Button_Click(object sender, RoutedEventArgs e)
{
    //TODO: DataPresenterExcelExporter オブジェクトのインスタンスを作成します
    //TODO: DataPresenterExcelExporter オブジェクトの Export メソッドを呼び出します
}
  1. DataPresenterExcelExporter オブジェクトのインスタンスを作成します。

XAML でインスタンスを作成している場合には、ウィンドウのリソース ディクショナリに追加できます。

XAML の場合:

<Window.Resources>
    <igExcelExporter:DataPresenterExcelExporter x:Key="excelExporter1" />
</Window.Resources>

Visual Basic の場合:

Dim exporter As New DataPresenterExcelExporter()
'DataPresenterExcelExporter オブジェクトをウィンドウのリソース ディクショナリに追加した場合には、コードのこの行を使用します
'Dim exporter A DataPresenterExcelExporter = DirectCast(Me.Resources("excelExporter1"), DataPresenterExcelExporter)

C# の場合:

DataPresenterExcelExporter exporter = new DataPresenterExcelExporter();
//DataPresenterExcelExporter オブジェクトをウィンドウのリソース ディクショナリに追加した場合には、コードのこの行を使用します
//DataPresenterExcelExporter exporter = (DataPresenterExcelExporter)this.Resources["excelExporter1"];
  1. エクスポート メソッドを呼び出します。

データを同期でエクスポートするか、非同期でエクスポートするかによって、 ExportExportAsync の 2 つのメソッドを選択できます。エクスポートされたファイルのファイル拡張子はターゲットの Excel のバージョンと一致する必要があります (Excel 2007/2010 の場合は .xlsx、Excel 97/2003 の場合は .xls)。

データを同期でエクスポートするには:

DataPresenterExcelExporter オブジェクトの Export メソッドを呼び出します。

Visual Basic の場合:

exporter.Export(Me.xamDataPresenter1, "xamDataPresenter1.xlsx", WorkbookFormat.Excel2007)

C# の場合:

exporter.Export(this.xamDataPresenter1, "xamDataPresenter1.xlsx", WorkbookFormat.Excel2007);

データを非同期でエクスポートするには:

DataPresenterExcelExporter オブジェクトの ExportAsync を呼び出してデータを非同期でエクスポートします。

Visual Basic の場合:

exporter.ExportAsync(Me.xamDataPresenter1, "xamDataPresenter1.xlsx", WorkbookFormat.Excel2007)

C# の場合:

exporter.ExportAsync(this.xamDataPresenter1, "xamDataPresenter1.xlsx", WorkbookFormat.Excel2007);
Note
非同期エクスポートの注意事項:
  1. 非同期エクスポートはデータをチャンクでエクスポートします。各チャンクは、 AsyncExportDuration プロパティによって指定された時間、処理され、2 つのチャンク処理間の時間は AsyncExportInterval プロパティで指定されます。

  2. ExportAsync メソッドを呼び出し、エクスポート処理が終了した時を追跡したい場合には、 ExportEnded イベントをフックするのが賢明です。

  1. (条件付き) 実装を検証します。

プロジェクトを実行して、エクスポート ボタンをクリックします。これによって xamDataPresenter コントロールが Excel にエクスポートされます。