SPREAD for WPF 4.0J - GcSpreadSheet
テーブルの連結
MESCIUS SPREAD for WPF 4.0J - GcSpreadSheet > 開発者ガイド > テーブル > テーブルの連結

GcSpreadSheet では、セル単位の連結を利用してテーブルをデータソースに連結できます。 テーブルの連結には、次の 2 通りの方法があります。

 テーブルを自動的に連結する

ITable インターフェースおよびそのメンバーの DataSourceプロパティを使用することで、テーブルをデータソースに自動的に連結できます。DataSource プロパティを設定する前に、テーブルの AutoGenerateColumns プロパティを true に設定してください。そうしない場合、現在のテーブル列が維持されます。

以下の例をご参照ください。ある企業の経理部門が、従業員の出張情報(フライトID、フライト日付、出発地、目的地など)をデータベースで管理しています。このデータベースは、自動的にテーブルに読み込まれ、出張の詳細を表示することができます。

コードのコピー
// AutoGenerateColumnsをtrueに設定した場合のテーブルの連結。
GrapeCity.Spreadsheet.IWorksheet sheet = spreadSheet1.Workbook.ActiveSheet;
// テーブルデータを作成します。
DataSet ds = new DataSet();
DataTable flightDetails = new DataTable("フライト詳細");
// DataTableの列を定義します。
flightDetails.Columns.Add("乗客名");
flightDetails.Columns.Add("部門");
flightDetails.Columns.Add("チケット種別");
flightDetails.Columns.Add("フライトID");
flightDetails.Columns.Add("フライト日付");
flightDetails.Columns.Add("出発地");
flightDetails.Columns.Add("目的地");
// フライト詳細の行を追加します。
flightDetails.Rows.Add("山田 太郎", "営業部", "エコノミー", 7855, new DateTime(2021, 10, 11).ToShortDateString(), "東京", "大阪");
flightDetails.Rows.Add("佐藤 花子", "サービス部", "エコノミー", 7426, new DateTime(2021, 10, 12).ToShortDateString(), "札幌", "福岡");
flightDetails.Rows.Add("鈴木 一郎", "経理部", "ビジネス", 7641, new DateTime(2021, 10, 15).ToShortDateString(), "名古屋", "那覇");
flightDetails.Rows.Add("高橋 美咲", "研究開発部", "エコノミー", 7293, new DateTime(2021, 10, 18).ToShortDateString(), "仙台", "広島");
flightDetails.Rows.Add("田中 誠", "マーケティング部", "ビジネス", 7117, new DateTime(2021, 10, 20).ToShortDateString(), "京都", "新潟");
// DataSetにDataTableを追加します。
ds.Tables.Add(flightDetails);
// テーブルを作成します。
sheet.Cells["A1"].Value = "※経理部専用";
GrapeCity.Spreadsheet.ITable table = sheet.Range("A2:G7").CreateTable(true);
// 列の自動生成を有効化します。
table.AutoGenerateColumns = true;
// テーブルをDataSourceに連結します。
table.DataSource = ds;                   
コードのコピー
' AutoGenerateColumnsをtrueに設定した場合のテーブルの連結。
Dim sheet As GrapeCity.Spreadsheet.IWorksheet = spreadSheet1.Workbook.ActiveSheet
' テーブルデータを作成します。
Dim ds As DataSet = New DataSet()
Dim flightDetails As DataTable = New DataTable("フライト詳細")
' DataTableの列を定義します。
flightDetails.Columns.Add("乗客名")
flightDetails.Columns.Add("部門")
flightDetails.Columns.Add("チケット種別")
flightDetails.Columns.Add("フライトID")
flightDetails.Columns.Add("フライト日付")
flightDetails.Columns.Add("出発地")
flightDetails.Columns.Add("目的地")
' フライト詳細の行を追加します。
flightDetails.Rows.Add("山田 太郎", "営業部", "エコノミー", 7855, New DateTime(2021, 10, 11).ToShortDateString(), "東京", "大阪")
flightDetails.Rows.Add("佐藤 花子", "サービス部", "エコノミー", 7426, New DateTime(2021, 10, 12).ToShortDateString(), "札幌", "福岡")
flightDetails.Rows.Add("鈴木 一郎", "経理部", "ビジネス", 7641, New DateTime(2021, 10, 15).ToShortDateString(), "名古屋", "那覇")
flightDetails.Rows.Add("高橋 美咲", "研究開発部", "エコノミー", 7293, New DateTime(2021, 10, 18).ToShortDateString(), "仙台", "広島")
flightDetails.Rows.Add("田中 誠", "マーケティング部", "ビジネス", 7117, New DateTime(2021, 10, 20).ToShortDateString(), "京都", "新潟")
' DataSetにDataTableを追加します。
ds.Tables.Add(flightDetails)
' テーブルを作成します。
sheet.Cells("A1").Value = "※経理部専用"
Dim table As GrapeCity.Spreadsheet.ITable = sheet.Range("A2:G7").CreateTable(True)
' 列の自動生成を有効化します。
table.AutoGenerateColumns = True
' テーブルをDataSourceに連結します。
table.DataSource = ds
 テーブルを手動で連結する

ITableColumn インターフェイスの DataField プロパティを使用して、テーブルをデータソースに連結し、テーブルの列を手動で設定できます。手動で連結する場合は、AutoGenerateColumns プロパティを false に設定する必要があります。

前セクションの例を参考に、企業は既存のデータソースを使用してテーブルを手動で作成することもできます。このテーブルは、従業員がフライト日に不在となる記録を保持し、各マネージャーに通知する用途に使用できます。以下の画像のように表示されます。

コードのコピー
// AutoGenerateColumnsをfalseに設定した場合のテーブル連結します。
// テーブルを作成します。
GrapeCity.Spreadsheet.IWorksheet sheet = spreadSheet1.Workbook.ActiveSheet;
sheet.Cells["A1"].Value = "不在社員一覧:";
GrapeCity.Spreadsheet.ITable table2 = sheet.Range("A2:D7").CreateTable(true);
// 列の自動生成を無効化します。
table2.AutoGenerateColumns = false;
// 列にデータフィールドを設定します。
table2.TableColumns[0].DataField = "乗客名";
table2.TableColumns[1].DataField = "部門";
table2.TableColumns[2].DataField = "目的地";
table2.TableColumns[3].DataField = "フライト日付";
// 前セクションで定義した既存のデータソース「ds」をテーブルに連結します。
table2.DataSource = ds;                
コードのコピー
' AutoGenerateColumnsをfalseに設定した場合のテーブル連結します。
' テーブルを作成します。
Dim sheet As GrapeCity.Spreadsheet.IWorksheet = spreadSheet1.Workbook.ActiveSheet
sheet.Cells("A1").Value = "不在社員一覧:"
Dim table2 As GrapeCity.Spreadsheet.ITable = sheet.Range("A2:D7").CreateTable(True)
' 列の自動生成を無効化します。
table2.AutoGenerateColumns = False
' 列にデータフィールドを設定します。
table2.TableColumns(0).DataField = "乗客名"
table2.TableColumns(1).DataField = "部門"
table2.TableColumns(2).DataField = "目的地"
table2.TableColumns(3).DataField = "フライト日付"
' 前セクションで定義した既存のデータソース「ds」をテーブルに連結します。
table2.DataSource = ds