【WPF】 C#を使ったcsv読み込みとグラフ化のサンプル!

当ページのリンクには広告が含まれています。

今回は、CSVファイルの読み込みとグラフ化をテーマに取り上げたいと思います。

「CSVファイルの読み込み」⇒「DataGridで表示」⇒「グラフの表示」という一連の操作をC#とWPFを使ってプログラムしています。

それぞれの処理は関数化しているので、必要な個所をコピペして使って頂いたり、丸ごとコピーして必要部分を改修するのも比較的しやすいと思います。

興味のある方は、是非この記事をご一読ください。

目次

サンプルプログラムの概要

今回のサンプルプログラムの動作は以下の様になっています。

任意のCSVファイルをDataGrid(一覧表示)部分にドラッグ&ドロップして頂くと、その内容がDataGridに表示されます。

あとは、任意のカラムをダブルクリックしていただければ、グラフが描画できるようになっています。

起動時は一覧の左端のデータがX軸として使われていますが、画面左上のドロップダウンリストで任意のカラムに変更することができます。

区切り文字はカンマかタブ、文字コードはSHIFT-JISかUTF-8が選択できるようにもなっています。

プログラムの構造

プログラムの構造は以下の通り5つのメソッドで構成されています。

コンストラクタでは EnableDragDropメソッドを、DataGridへのドラッグ&ドロップ処理はLoadCsvメソッドを呼ぶだけと非常にシンプルです。

DataGridのダブルクリック時に呼ばれる処理が一番複雑ですが、やっていることはクリックされたカラムを特定し、そのカラムのデータをDrawLineに渡しているだけです。

グラフを描画するためには、補助線の有無などレイアウトの体裁を整える必要があるので、その処理はChartInitというメソッドとして外出ししていて、DataLineからChartInitを呼び出すようにしています。

ソースコードをビルドする上での注意点

グラフ描画コントロールは手軽さを優先し、Visual Studio 標準で備わっている MSChartコントロールを使うことにしました。

そこで、以前、こちらの記事で解説したグラフ描画クラスのソースから、ChartInit と DrawLine の2つのメソッドを抜粋して使っています。

MSChartはWPFでそのまま使えないので、WindowsFromsHost 経由で MSCart を呼び出す必要があるのですが、そのためには次の3つのアセンブリを参照設定する必要があります。

  • System.Windows.Forms
  • System.Windows.Forms.DataVisualization
  • WindowsFormsIntegration

下図を参考にして、ソリューションエクスプローラーからアセンブリを参照してください。

ソースコード一式

今回は ChartFromCsv という名前でソリューションを作成しています。

MainWindowが1つだけの簡単なプログラムとなっています。

XAMLのソース

XAMLのソースを読み解くための前提知識として、どのようなコントロールがあるかについて押さえておきたいと思います。

吹き出しに、画面上の機能とコントロールに付けた名前を表記していますので、まずこれを理解してからソースを読むと、より分かりやすいかと思います。

以下がXAMLのソースコードです。

C#のソースコード

以下はC#のソースコードになります。

ソースコードの量は少し多いかもしれませんが、関数化されていますので、1つ1つは単純です。

主な処理はDataGridのダブルクリック処理なので、uxDataGrid_MouseDoubleClick を見ていただくと、どのような処理を行っているかが分かるかと思います。

まとめ

今回は、ドラッグ&ドロップしたCSVファイルを一覧表示(DataGrid)し、各カラムをダブルクリックすることで、グラフを描画するサンプルプログラムを紹介しました。

簡易的に作成しているため、フォルダからファイルを選択するような機能や、例外処理は入れてはいませんが、WPFにおけるドラッグ&ドロップの方法、CSVファイルの読み込み方法、DataGridにおいてクリックされたセルの取得方法、グラフの描画方法など、基本的な機能は備わっていますので、参考にして頂ける部分も多いのではないかと思います。

もっといろいろなグラフを描画したい場合はこちらの記事から必要なグラフのソースをコピペしてお使い下さい。

また、MSChart以外のグラフ描画コントロールを使いたい場合は、こちらの記事に詳しく紹介していますので、ご一読ください。

今回の記事が皆様のお役に立てれば光栄です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次