私は.csv
ファイルを持っています。このファイルを使用してファイルを作成したいと思います。これは.csv
ファイルの形式です。これは私の.csv
ファイルの小さな部分です。元のファイルには60000行以上の行があります。C#で1つの.csvファイルを使用して条件を確認してファイルを保存する方法
Date,Pass,CutMark1,Marks1,CutMark2,Marks2,
22/06/2017 13:04:18,FALSE,TRUE,40,FALSE,35,
22/06/2017 13:04:20,FALSE,TRUE,35,FALSE,35,
22/06/2017 13:04:35,FALSE,TRUE,55,FALSE,55,
22/06/2017 13:04:37,FALSE,TRUE,100,FALSE,55,
22/06/2017 13:04:37,FALSE,TRUE,38,FALSE,55,
22/06/2017 13:04:38,FALSE,FALSE,35,FALSE,55,
22/06/2017 13:04:39,FALSE,FALSE,35,FALSE,38,
22/06/2017 13:04:40,FALSE,FALSE,35,TRUE,38,
22/06/2017 13:04:41,FALSE,FALSE,55,TRUE,38,
22/06/2017 13:04:42,FALSE,FALSE,55,TRUE,55,
22/06/2017 13:04:44,FALSE,FALSE,38,TRUE,55,
22/06/2017 13:04:45,TRUE,FALSE,38,TRUE,40,
22/06/2017 13:04:46,TRUE,FALSE,38,TRUE,40,
22/06/2017 13:04:48,TRUE,FALSE,55,FALSE,40,
22/06/2017 13:04:49,TRUE,FALSE,55,FALSE,25,
22/06/2017 13:04:50,TRUE,FALSE,55,FALSE,45,
22/06/2017 13:04:52,FALSE,TRUE,55,FALSE,60,
22/06/2017 13:04:53,FALSE,TRUE,40,FALSE,80,
22/06/2017 13:04:54,FALSE,TRUE,40,FALSE,80,
22/06/2017 13:04:56,FALSE,TRUE,40,FALSE,75,
22/06/2017 13:04:57,FALSE,TRUE,40,FALSE,90,
22/06/2017 13:04:58,FALSE,TRUE,55,FALSE,88,
22/06/2017 13:05:00,TRUE,TRUE,55,TRUE,23,
22/06/2017 13:05:01,TRUE,TRUE,55,TRUE,45,
22/06/2017 13:05:02,TRUE,TRUE,20,TRUE,78,
22/06/2017 13:05:04,TRUE,TRUE,45,TRUE,45,
22/06/2017 13:05:05,TRUE,TRUE,85,TRUE,69,
22/06/2017 13:05:06,TRUE,TRUE,62,TRUE,45,
22/06/2017 13:05:08,TRUE,TRUE,100,TRUE,35,
このファイルを次のように保存します。ここでは、 "パス"列がチェックしたい。 False、True、False、True、等がありますので、これを使ってファイルを保存します。一例として、このファイルを最初にFalseの値をFalse1.csvとして保存してから、次にTrue1.csvをもう一度False2.csvに再度遭遇させて、TrueまたはFalseが何回会うかのファイル名に数値を追加したい。この.csv
ファイルには、他のすべての列を保存する必要があります。
私は説明のために私のためにこの例を使用します、私は最初に偽の値と真の値を別のファイルに保存したいと思います。私はこの事例を得ています。ここでは、Pass列の最初の11行は「False」です。だから私はFalse1.csv
として保存する必要があるそれらの(1-11)行を保存したい場合は、True1.csv
として保存する必要があります行(12-16)がパス "真"を満たし、その後、パス値は再び "偽"を満たして保存これらの行(17-22)はFalse2.csv
が再びパス列を満たしているので「True」となり、その行(23-29)はTrue2.csv
として保存されます。同様に保存したい場合は、.csv
ファイルに60000個のrawsがあります。
これは.csv
ファイルを読むためのコードです。
using System.Globalization;
public static string dateFormatString = "dd/MM/yyyy HH:mm:ss";
private void btnSeperateFile_Click(object sender, EventArgs e)
{
if (tbOutputFilePath2 != null)
{
List<DrawNew> ObservingData = new List<DrawNew>(); // List to store all available DrawNew objects from the CSV
// Loops through each lines in the CSV
foreach (string line in System.IO.File.ReadAllLines(outputFilePath.Text).Skip(1)) // .Skip(1) is for skipping header
{
string[] valuesCsvLine = line.Split(',');
DrawNew mngInstance = new DrawNew();
mngInstance.Date = DateTime.ParseExact(valuesCsvLine[0], dateFormatString, CultureInfo.InvariantCulture);
mngInstance.Pass = (valuesCsvLine[1] == "TRUE" ? true : false);
mngInstance.CutMark1 = (valuesCsvLine[2] == "TRUE" ?true: false);
mngInstance.Marks1 = int.Parse(valuesCsvLine[3]);
mngInstance.CutMark2 = (valuesCsvLine[4] == "TRUE" ? true : false);
mngInstance.Marks2 = int.Parse(valuesCsvLine[5]);
ObserveData.Add(mngInstance);
}
}
}
これは.csv
ファイルのデータを格納するためのクラスです:
class DrawNew
{
public DateTime Date { get; set; } // property to store Date
public bool Pass { get; set; } // property to store Pass
public bool CutMark1 { get; set; } // property to store CutMark1
public int Marks1 { get; set; } // property to store Marks1
public bool CutMark2 { get; set; } // property to store CutMark2
public int Marks2 { get; set; } // property to store Marks2
}
ありがとう、あなたの助けをありがとう。そのファイルを保存するために列見出しを転送する方法を言うことができます。 – user8235318
最も簡単な方法は、元のファイル(スキップしたもの)の最初の行を取得して覚えておき、最初の行をすべての新しいファイル( 'StoreLines'内)に書き込むことです。 – Corak