1

CSV について質問があります。CSV をエクスポートし、C# で読み取ります。CSV の各行の最後の列は、A、B、C、D、E、または G です。A と D を含む行を含む新しい CSV が必要です。たとえば、B と C を含む別の CSV が必要です。

誰かが私を正しい方向に向けることができますか? 私は立ち往生しています..

これは私のコードの一部です

StreamReader debtors = new StreamReader(@"C:\CSV\Debtors.csv");
StreamWriter debtorsMetaal = new StreamWriter(@"C:\CSV\DebtorsMetaal.csv");
StreamWriter debtorsSystemen = new StreamWriter(@"C:\CSV\DebtorsSystemen.csv");
StreamWriter debtorsHolding = new StreamWriter(@"C:\CSV\DebtorsHolding.csv");

while(debtors.Peek() >=0)
{
   string line = debtors.ReadLine();
   try
   {
     string[] rowsArray = line.Split(';');

    //..... etc

行がバラバラになりましたが、行の最後の列を選択して、最後の列の値に基づいて新しい CSV ファイルを作成するにはどうすればよいですか?

duersMetaal、debatorsSystemen、debatorsHolding が新しい CSV ファイルになります。

例えば;

CSVの行に次の情報があります

number - name- description - type

ここで、 type は A、B、C、D 、 E または G のいずれかです。ここで、type = A の行と type = D の行を 1 つの CSV ファイルにまとめる必要があります。これは可能ですか?

値 A、B、C、D、E、または G は、常に AJ 列に Excel 形式で表示されます。

4

1 に答える 1

2

次のようなループを使用します。

var adLines = new List<string>();
var bcLines = new List<string>();
var unknownLines = new List<string>();
var adList = new[]{"A", "D"};
var bcList = new[]{"B", "C"};
using(var debtors = new StreamReader(@"C:\CSV\Debtors.csv"))
{
    string line = null;
    while((line = debtors.ReadLine()) != null)
    {
        string[] columns = line.Split(';'); // you should check if columns.Length is correct
        string lastColumn = columns.Last().Trim();
        if(adList.Contains(lastColumn, StringComparer.CurrentCultureIgnoreCase))
            adLines.Add(line);
        else if(bcList.Contains(lastColumn, StringComparer.CurrentCultureIgnoreCase))
            bcLines.Add(line);
        else
            unknownLines.Add(line);
    }
}
File.WriteAllLines(@"C:\CSV\DebtorsSystemen.csv", adLines);
File.WriteAllLines(@"C:\CSV\DebtorsHolding.csv", bcLines); 

ただし、一般に、車輪を再発明して、次のような利用可能な CSV パーサーを使用するべきではありません。

http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader

于 2013-10-11T14:11:10.387 に答える