C#でcsvファイルを読み込む簡単な方法を紹介します。測定結果や設定値などをcsv形式で出力する機器・ソフトは多いです。そのようなcsvファイルを自分のソフトに読み込ませて、活用するソフトを作成したい場合などに役立ちます。
csvファイルの読み込み方法
今回はドラッグ&ドロップでcsvファイルを入力します。
ポイントは以下の通り。
- ソフトのGUIへのファイルドロップを許可する
- ファイルがドロップされた際のイベントを作成
- ファイルパスからcsvファイルをStreamReaderを使用して読み込む
以上でcsvファイルを取り込むことができます。
サンプルコード(csv読み込み)
csvファイルをドロップすると、その内容をコンソール上に出力(表示)するサンプルを示します。
XAML
上記のポイントはコード上以下に該当します。
- AllowDrop = “True”
- Drop = “FileDrop_Event”
<Window x:Class="DropFile.Views.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" Title="DropFile" Height="200" Width="200" AllowDrop="True" Drop="FileDrop_Event" > <Grid> <StackPanel Orientation="Vertical" VerticalAlignment="Center"> <TextBlock Text="ここにファイルをドロップ" HorizontalAlignment="Center" /> </StackPanel> </Grid> </Window>
コードビハインド
XAMLで設定したファイルドロップイベントをFileDrop_Event()で受けます。
csvファイルはStreamReaderで読み取り後、for文で1行ずつ読み取ります。
namespace DropFile.Views { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } //ファイルドロップイベント public void FileDrop_Event(object sender, DragEventArgs e) { //ファイルのパスとタイプ用変数 string file_path; string file_type; if (e.Data.GetDataPresent(DataFormats.FileDrop)) { //ファイルのフルパス・タイプを取得 file_path = ((string[])e.Data.GetData(DataFormats.FileDrop))[0]; file_type = Path.GetExtension(file_path); //確認用 Console.WriteLine(" ファイルのパス :{0}", file_path); Console.WriteLine(" ファイルのタイプ :{0}", file_type); Console.WriteLine("--- csvファイル読み込み ---"); //リーダーを生成 StreamReader reader = new StreamReader(file_path); //csvの中身読み取り(末尾まで繰り返す) while (!reader.EndOfStream) { //一行読み込む string row = reader.ReadLine(); //表示 Console.WriteLine(row); } } } } }
サンプルコードではcsvファイルの中身を表示してますが、中身を活用したい場合は適当な配列を用意してそこに代入するといいと思います。
コメント