バージョン

xamDataPresenter を使用してデータを Word にエクスポート

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

はじめに

DataPresenter コントロールは、DataPresenterExcelExporter クラスを使用して、Microsoft® Word® フォーマットでデータをエクスポートできます。DataPresenterWordWriter クラスは、特定の DataPresenterBase の値/レイアウトを表すテーブルを含む Word 文書を作成するすべての作業をカプセル化します。

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

Note
注:

DataPresenter コントロールのスタイルの柔軟性のために、DataPresenterWordWriter オブジェクトは DataPresenter コントロールのスタイルを Word にエクスポートしません。ただし、インフラジスティックスの Word Engine オブジェクトに直接アクセスする、またはエクスポートの前にフォーマットを適用することによって、結果のドキュメントを書式設定できます。

要件

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

  • Infragistics.WPF.DataGrids

  • Infragistics.WPF.DataGrids.Word

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

概要

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

  1. グリッドを追加

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

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

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

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

  6. DataPresenterWordWriter オブジェクトのインスタンスを作成

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

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

手順

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

XAML の場合:

xmlns:igWordWriter="http://infragistics.com/WordWriter"

Visual Basic の場合:

imports Infragistics.Windows.DataPresenter.WordWriter

C# の場合:

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

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

Visual Basic の場合:

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

C# の場合:

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

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

XAML の場合:

<Window.Resources>
    <igWordWriter:DataPresenterWordWriter x:Key="wordWriter1" />
</Window.Resources>

Visual Basic の場合:

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

C# の場合:

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

データを同期でエクスポートするか、非同期でエクスポートするかによって、 ExportExportAsync の 2 つのメソッドを選択できます。

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

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

Visual Basic の場合:

writer.Export(Me.xamDataPresenter1, "xamDataPresenter1.docx")

C# の場合:

writer.Export(this.xamDataPresenter1, "xamDataPresenter1.docx");

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

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

Visual Basic の場合:

writer.ExportAsync(Me.xamDataPresenter1, "xamDataPresenter1.docx")

C# の場合:

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

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

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

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