[5分で分かるC#] StreamReaderでテキストデータ取得(txt,csvファイル)
StreamReaderクラスを用いたtxt,csvファイルの読み込み方法
今回は主が頻繁に使うStreamReaderクラスを用いたテキストファイルのデータ取得を説明していきます。生産現場でも生産ログはファイルで作っているという会社は多いのではないでしょうか。
主の会社でもほとんどの生産データはファイルで作成されており,そのほとんどがcsvファイルでした。数年かけてデータベース化し,IoTとして座席から見えるようにして来ましたがそれでもcsvファイルでのログ残しは一部で健在です。
まず,動画で説明し忘れましたがStreamReaderはSystem.IOをusingで取り込まないと動きません。ご注意願います。
今回の動画ではデータを1行ずつ読み込んでいますが一気に読み込む方法もあります。そちらを確認したい方はReadToEnd() で検索すると出て来ます。ただ個人的には1行ずつ読み込みのほうが圧倒的に使う機会が多いと思っています。
今回は説明しませんでしたがほとんどのcsvファイルの場合は列ごとにデータが ‘,’ で区切られています。そのためエクセルの何列目のデータなのかはstringのSplitクラスでセミコロンで区分けする必要があります。
下に今回のソースコードのボタンアクション部分を表示します。この中で
SplitData = Row[counter].Split(‘,’);
の部分で列ごとデータをSplitDataに格納しています。
private void button1_Click(object sender, EventArgs e)
{
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
//ファイルを選択した場合の処理
string[] Row = new string[10];
string[] SplitData;
int counter = 0;
//csvファイルを読み取り,textboxに表示する
using (StreamReader sr = new StreamReader(openFileDialog1.FileName))
{
while(sr.Peek() >= 0)
{
Row[counter] = sr.ReadLine();
SplitData = Row[counter].Split(',');
result.Text = result.Text + Row[counter] + "\r\n";
counter++;
}
}
}
else
{
//それ以外
}
}
StreamReaderはエクセルなどに比べて圧倒的に早いので生産現場でも頻繁に使われています。少しでもこの記事が役に立てば幸いです。