Пример #1
0
        /// <summary>
        /// csvファイルの読み込み
        /// </summary>
        /// <returns>読み込み結果</returns>
        private static Csv ReadCsv(string filePath, CsvDef def)
        {
            // 初期化
            var csv      = new Csv();
            var dataList = new List <List <string> >();

            csv.DataList = dataList;

            // 存在チェック
            if (!File.Exists(filePath))
            {
                throw new Exception("ファイルが見つかりません。" + filePath);
            }

            // ファイル名を設定
            csv.FileName = Path.GetFileName(filePath);

            // csv読み込み
            var enc = Encoding.GetEncoding(def.Encoding);

            using (var reader = new StreamReader(filePath, enc))
            {
                var rowNumber = 0;
                while (!reader.EndOfStream)
                {
                    // 1行読み込み
                    var line = reader.ReadLine();
                    rowNumber++;

                    // skip確認
                    if (def.SkipRowNumbers.Contains(rowNumber))
                    {
                        continue;
                    }

                    // lineを分割
                    var items = line.Split(def.Separator, StringSplitOptions.None).ToList();

                    // 先頭行はHeader
                    if (def.HasHeader && csv.Header == null)
                    {
                        csv.Header = items;
                        continue;
                    }

                    // 最終行はFooter
                    if (def.HasFooter && reader.EndOfStream)
                    {
                        csv.Footer = items;
                        continue;
                    }

                    // 中間行はData
                    dataList.Add(items);
                }
            }

            return(csv);
        }
Пример #2
0
        /// <summary>
        /// csvをすべて読み込む
        /// </summary>
        /// <param name="dirPath">csvの配置ディレクトリバス</param>
        /// <param name="def">csv定義</param>
        /// <returns>読み込み結果</returns>
        public static IReadOnlyCollection <Csv> ReadAllCsv(string dirPath, CsvDef def)
        {
            var csvList = new List <Csv>();

            foreach (var filePath in Directory.GetFiles(dirPath, "*.csv"))
            {
                csvList.Add(Csv.ReadCsv(filePath, def));
            }

            return(csvList);
        }
Пример #3
0
 /// <summary>
 /// 読み込み結果のチェック
 /// </summary>
 /// <param name="def">読み込み結果</param>
 /// <remarks>エラー時は例外を投げる</remarks>
 private static void Check(CsvDef def)
 {
     try
     {
         var enc = System.Text.Encoding.GetEncoding(def.Encoding);
     }
     catch (ArgumentException e)
     {
         throw new Exception("Encodingの設定が不正です。", e);
     }
 }