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;
}
}
}
おーわり