バージョン

グリッドデータを Excel にエクスポートする

WinGrid コントロールは、データを Microsoft Excel スプレッドシート形式でエクスポートできます。コレクションを実行するには WinGridExcelExporter を使用します。Excel 形式にエクスポートするプロセスは、エクスポート前にレイアウトと外観をデータにどのように適用するか、およびどのデータを含めてどのデータを除外するかを制御する点で、グリッド データを印刷するプロセスに似ています。

グリッド データを Microsoft Excel形式にエクスポート:

  1. アプリケーション内のフォームに UltraWinGrid を追加します。または、既存のアプリケーションを開き、UltraWinGrid を含むフォームを表示します。

  2. Visual Studio のツールボックスで UltraGridExcelExporter コンポーネントを指定してダブルクリックし、フォームに追加します。これは非表示エレメントなので、フォームのコンポーネント トレイに表示されます。

  3. エクスポート機能を開始するコントロール(コマンド ボタンなど)またはメニュー項目をフォームに追加します。

  4. エクスポートを開始するコントロールの Click イベントに、次のコードを入力します。

Visual Basic の場合:

Private Sub UltraButton1_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles UltraButton1.Click
	Me.UltraGridExcelExporter1.Export(Me.UltraGrid1, "C:\GridData.xls")
End Sub

C# の場合:

private void ultraButton1_Click(object sender, System.EventArgs e)
{
	this.ultraGridExcelExporter1.Export(this.ultraGrid1, "C:\\GridData.xls");
}

このコードは、UltraGridExcelExporter エレメントの Export メソッドを呼び出してエクスポート プロセスを開始します。このメソッドを呼び出すときは、データをエクスポートする元の UltraWinGrid と、データのエクスポート先となるファイルの名前を渡します。

現在の書式設定を維持しながら、すべてのグリッド データを Excel ファイルにダンプするのみである場合は、ここで終了できます。

  1. エクスポート データを微調整する場合は、ExcelExporter コントロールによって発生するイベントを使用します。最初に発生するイベントは BeginExport イベントです。このイベントを使用して、すべてのエクスポート データに適用される条件を設定できます。

次のコードは、BeginExport イベントの使用例を示します。このコードは Excel ワークブックに特定の名前を持つワークシートを最初に作成して、エクスポートされたデータを保持します。次に、新しく追加したワークシートにエクスポート データを取り込むため、そのワークシートをカレント ワークシートにします。最後に、新しいワークシートをアクティブにします。これで、ユーザーが XLS ファイルを開いたときにこのワークシートが最初に表示されます。

Visual Basic の場合:

 Private Sub UltraGridExcelExporter1_BeginExport(ByVal sender As Object, _
  ByVal e As Infragistics.Win.UltraWinGrid.ExcelExport.BeginExportEventArgs) _
  Handles UltraGridExcelExporter1.BeginExport
	e.CurrentWorksheet = _
	e.Workbook.Worksheets.Add("Exported Grid Data")
	e.Workbook.ActiveWorksheet = e.CurrentWorksheet
End Sub

C# の場合:

private void ultraGridExcelExporter1_BeginExport(object sender,
  Infragistics.Win.UltraWinGrid.ExcelExport.BeginExportEventArgs e)
{
	e.CurrentWorksheet =
	  e.Workbook.Worksheets.Add("Exported Grid Data");
	e.Workbook.ActiveWorksheet = e.CurrentWorksheet;
}
  1. エクスポート中に、書き出されるデータを制御するために使用できるイベントは他にもあります。次のコードは CellExporting イベントで使用します。このコードは、エクスポートされる各セルが文字列データ型かどうかを確認します。"Owner" というワードで始まる文字列はアプリケーションからエクスポートされません。このためこのコードは、Excel ファイルに表示されるメッセージの代わりを果たします。

Visual Basic の場合:

Private Sub UltraGridExcelExporter1_CellExporting(ByVal sender As Object, _
  ByVal e As Infragistics.Win.UltraWinGrid.ExcelExport.CellExportingEventArgs) _
  Handles UltraGridExcelExporter1.CellExporting
	Dim sCellType As String
	Dim sCellContents As String
	sCellType = e.Value.GetType().FullName
	If sCellType = "System.String" Then
		sCellContents = e.Value
		If sCellContents.StartsWith("Owner") = True Then
			e.Value = "Position Confidential data $$*$$NOT$$* $$ exported."
		End If
	End If
End Sub

C# の場合:

private void ultraGridExcelExporter1_CellExporting(object sender,
  Infragistics.Win.UltraWinGrid.ExcelExport.CellExportingEventArgs e)
{
	string sCellType = e.Value.GetType().FullName;
	if (sCellType == "System.String")
	{
		string sCellContents = e.Value.ToString();
		if (sCellContents.StartsWith("Owner"))
		{
			e.Value = "Position Confidential data $$*$$NOT$$* $$ exported.";
		}
	}
}
  1. CellExporting イベント(またはその他の …​Exporting イベント)を使用すると、Excel ファイルに書き込まれる前のグリッド データにアクセスできます。これにより、事前処理を実行できます。CellExported イベントを使用して、ファイルにデータが書き込まれた後の事後処理を実行することもできます。たとえば次のコードは、Excel ワークシート内の偶数行のセルの下側に、二重線の境界線スタイルを適用します。

Visual Basic の場合:

Private Sub UltraGridExcelExporter1_CellExported(ByVal sender As Object, _
  ByVal e As Infragistics.Win.UltraWinGrid.ExcelExport.CellExportedEventArgs) _
  Handles UltraGridExcelExporter1.CellExported
	If e.CurrentRowIndex Mod 2 = 0 Then
		Dim cfCellFmt As Infragistics.Documents.Excel.IWorksheetCellFormat
		Dim iRdex As Integer
		Dim iCdex As Integer
		iRdex = e.CurrentRowIndex
		iCdex = e.CurrentColumnIndex
		' 現在のセルの CellFormat オブジェクトへの参照を取得します。
		cfCellFmt = _
		e.CurrentWorksheet.Rows(iRdex).Cells(iCdex).CellFormat
		' 下の境界線の書式オブジェクト プロパティを設定します。
		cfCellFmt.BottomBorderStyle = _
		Infragistics.Documents.Excel.CellBorderLineStyle.Double
	End If
End Sub

C# の場合:

private void ultraGridExcelExporter1_CellExported(object sender,
  Infragistics.Win.UltraWinGrid.ExcelExport.CellExportedEventArgs e)
{
	if(e.CurrentColumnIndex%2==0)
	{
		Infragistics.Documents.Excel.IWorksheetCellFormat cfCellFmt;
		int iRdex = e.CurrentRowIndex;
		int iCdex = e.CurrentColumnIndex;
		// 現在のセルの CellFormat オブジェクトへの参照を取得します。
		cfCellFmt =
		e.CurrentWorksheet.Rows[iRdex].Cells[iCdex].CellFormat;
		// 下の境界線の書式オブジェクト プロパティを設定します。
		cfCellFmt.BottomBorderStyle =
		Infragistics.Documents.Excel.CellBorderLineStyle.Double;
	}
}