3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[C#]csvファイルを指定数分のファイルに分割する

Last updated at Posted at 2017-11-06

csvファイルの分割

アナログに分割します。。
もっといい方法、懸念事項等あればご教示ください(+o+)
※2017/11/11 ループ内のEOF判定が不要なので削除しました。

csvファイル分割

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            
            try
            {
                // 行数を取得(ヘッダー分含まず)
                string[] lines = File.ReadAllLines(@"D:\vcCsvPrc\test.csv",
                    Encoding.GetEncoding("Shift_JIS"));
                long cntRow = lines.Length - 1;

                // 分割数の決定
                long syou = cntRow / 9;   // 商(切捨) 9は可変にする
                long amari = cntRow % 9;  // 余り     9は可変にする

                // ファイル読込
                using (var sr = new System.IO.StreamReader(@"D:\vcCsvPrc\test.csv", 
                    Encoding.GetEncoding("Shift_JIS")))
                {
                    // ヘッダー読込
                    string headRow = sr.ReadLine();

           // 9ファイル作成(新規作成)
                    for (int i = 1; i <= 9; ++i)
                    {
                        using (var sw = new System.IO.StreamWriter(@"D:\vcCsvPrc\bunkatsutest" + i + ".csv", 
                            false, System.Text.Encoding.GetEncoding("shift_jis")))
                        {
                            // ヘッダー挿入
                            sw.WriteLine(headRow);

                            // 余りがある場合
                            if (amari > 0)
                            {
                                // 商 + 1回数分ループ
                                for (int j = 0; j < syou + 1; ++j)
                                {
                                    // 商分書き込む
                                    sw.WriteLine(sr.ReadLine());
                                }

                                // 余り - 1
                                amari = amari - 1;
                            }
                            else
                            {
                                // 商の回数分ループ
                                for (int j = 0; j < syou; ++j)
                                {
                                    // 商分書き込む
                                    sw.WriteLine(sr.ReadLine());
                                }
                            }
                        }
                    }
                }
            }
            catch (System.Exception e)
            {
                Console.WriteLine(e.Message);
            }

            return;
        }
    }
}


おーわり

3
4
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?