Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Visual Studio 2015 でチャートコントロールと Excel データをバインド

More than 3 years have passed since last update.

標準 ADO.NET プロシージャを使ってデータバインドして、Visual Studio ツールボックスのコントロールから Excel データとの双方向接続を実現。この記事ではVisual Studio のグラフィカルアプローチと、ほんの数行のコードでデータバインドをする方法を説明します。

データバインドによって、UI コントロールからデータに接続できます。 CData ADO.NET Provider for Excel を使って、Visual Studio 上で Windows Forms および Web Forms とExcel データをデータバインドできます。この記事では、ウィザードから変更をライブで反映するチャートにExcel データをデータバインドする方法を説明します。 コードWalk-through セクションではチャートをほんの数行のコードで作成します。

チャートへのデータバインド

データバインドは3つのステップから構成されます。コントロールのインスタンス作成、データソースの設定、データバインドです。

接続を設定してデータベースオブジェクトを選択

下の手続きにより、データソース構成ウィザードを使ってチャートコントロールと Excel との接続を作成します。ウィザード上でデータバインドをする Excel エンティティを使います。

1.Windowsフォームアプリケーションプロジェクトで、チャートコントロールをツールボックスからフォーム上にドラッグ&ドロップします。チャートプロパティのデータセクションで DataSource を選択し、メニューからプロジェクトデータソースの追加を選択します。

fig4_01.png

2.出てくるデータソース構成ウィザードで データベース -> データセット を選択します。

3.データ接続ステップで、「新しい接続」をクリックします。

4.データ接続の選択ダイアログで、「変更」をクリックして、CData Excel データソースを選択して、接続プロパティを入力します。参照先のExcelファイルのパスを設定します。

fig4_02.png

5.使用するデータソースオブジェクトを選択します。例は Temp テーブルです。

fig4_03.png

データバインド

データソースの追加とデータベースオブジェクトを選択したら、チャートにオブジェクトをバインドします。この例では、X軸に 年月 をY軸に 平均気温(℃) を設定します。

fig4_04.png

チャートはこれで Excel データにデータバインドされました。チャートを実行して最新のデータを表示させましょう。

fig4_05.png

コード Walk-through

Excel データへのデータバインドはほんの数行のコードのみが必要で、3つの簡単なステップで完了できます。

  1. Excel に接続します。
  2. ExcelDataAdapter を作成して、クエリを作成し、結果を入れるデータセットを作成します。
  3. 結果セットとチャートをデータバインドします。

下に完全なコードを示します。

ExcelConnection conn = new ExcelConnection("Excel File='C:\\temp\\temp.xlsx';");
ExcelCommand command = new ExcelCommand("SELECT * FROM Temp", conn);
ExcelDataAdapter da = new ExcelDataAdapter(command);
DataSet ds = new DataSet();
da.Fill(ds);

chart2.DataSource = ds;
chart2.Series[0].XValueMember = "年月";
chart2.Series[0].YValueMembers = "平均気温(℃)";

chart2.DataBind();
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away