1

csv ファイルを読み取るための次のコード セグメントがあります。本当に標準的ではない行を読むことに問題があります。たとえば、次のような行

105,"XXX Bank Azerbaijan" CJSC,1078      ,AZ,Baku,"xxx street",Nasimi district

2 番目のフィールド「XXX Bank Azerbajan」CJSC には、コンマのすぐ隣に引用符がないため、catch フィールドに入ります。ただし、このファイルを Excel で開くと、問題はなく、次のようにフィールドが正しく分割されます。

105|XXX Bank Azerbaijan CJSC|1078|AZ|Baku|xxx street|Nasimi district

|列区切りとして使用した場所。を使用して同じ効果を得る方法はありTextFieldParserますか。それ以外の場合は、別の csv リーダーを使用する必要があります。

  using (TextFieldParser parser = new TextFieldParser(fileName, Encoding.GetEncoding("windows-1252")))
  {
            parser.TextFieldType = FieldType.Delimited;
            parser.SetDelimiters(",");
            parser.TrimWhiteSpace = true;
            parser.HasFieldsEnclosedInQuotes = true;

            parser.ReadLine(); // Reads dummy header

            while (!parser.EndOfData)
            {
                try
                {
                    string[] fieldRow = parser.ReadFields();
                    T fieldsClass = new T();
                    fieldsClass.Initialize(fieldRow);
                    data.Add(fieldsClass);
                    rowCount++;
                }
                catch
                {
                    Console.WriteLine("Skipping line" + parser.ErrorLine);
                }

            }
}
4

1 に答える 1