「現場で使える! SQL Server実践ガイド」を公開しました!

【C#】CSVファイルを読み込む

前提

1.読み込むcsvファイルは「楽天カードの利用明細」。フォーマットは以下。
 ┗1行目に項目名
 ┗2行目から利用店名や利用金額など
 ┗「”(ダブルコーテーション)」で括られている


2.0列目から数えて、「利用店名(1列目)」毎の「利用金額(4列目)」を集計する

サンプルコード

(省略)

private void Button_Click(object sender, RoutedEventArgs e)
{
    //クレジットカード明細の抜粋を設定するDictionary
    Dictionary<string, double> crediCardStatement = new Dictionary<string, double>();

    //csvファイル名
    string csvFile = "C:\\Users\\user\\Desktop\\rakutenInput\\enavi201908(1286).csv";

    //csv読み込み
    using (var sr = new System.IO.StreamReader(@csvFile, System.Text.Encoding.GetEncoding("shift_jis")))
    {
        double userAmountTemp;
        //利用店名の列
        const int useStoreNamePos = 1;
        //利用金額の列
        const int userAmountPos = 4;

        //1行読み捨てる
        sr.ReadLine();

        while (!sr.EndOfStream)
        {
            //1行読み込む
            string line = sr.ReadLine();

            //カンマ毎に分けて配列に格納
            string[] values = line.Split(',');

            //利用店名と利用金額を取得 ※「"(ダブルコーテーション)」を削除
            string useStoreName = values[useStoreNamePos].Trim(new char[] { '"' });
            double userAmount = double.Parse(values[userAmountPos].Trim(new char[] { '"' }));

            //Dictionaryへ設定
            if (crediCardStatement.ContainsKey(useStoreName))
            {
                userAmountTemp = crediCardStatement[useStoreName];
                crediCardStatement[useStoreName] = userAmountTemp + userAmount;
            }
            else
            {
                crediCardStatement.Add(useStoreName, userAmount);
            }
        }
    }

    //Dictionaryの内容を出力画面に出力し確認
    foreach (string useStoreName in crediCardStatement.Keys)
    {
        System.Diagnostics.Trace.WriteLine(useStoreName + " : " + crediCardStatement[useStoreName]);
    }
}

実行結果


タイトルとURLをコピーしました