私は Microsoft.VisualBasic.FileIO.TextFieldParser
csvファイルを読み込んで編集し、解析するために使用しています。
問題は、解析後に引用符が保持されていないことです。
使用してみparser.HasFieldsEnclosedInQuotes = true;
ましたが、何らかの理由で引用符を保持していないようです。
この問題は、フィールドに引用符が含まれていると壊れます。たとえば、次のようになります。
"some, field"
後
some, field
2 つの別個のフィールドとして
これが私の方法です
public static void CleanStaffFile()
{
String path = @"C:\file.csv";
String dpath = String.Format(@"C:\file_{0}.csv",DateTime.Now.ToString("MMddyyHHmmss"));
List<String> lines = new List<String>();
if (File.Exists(path))
{
using (TextFieldParser parser = new TextFieldParser(path))
{
parser.HasFieldsEnclosedInQuotes = true;
parser.Delimiters = new string[] { "," };
while (!parser.EndOfData)
{
string[] parts = parser.ReadFields();
if (parts == null)
{
break;
}
if ((parts[12] != "") && (parts[12] != "*,116"))
{
parts[12] = parts[12].Substring(0, 3);
}
else
{
parts[12] = "0";
}
lines.Add(string.Join(",", parts));
}
}
using (StreamWriter writer = new StreamWriter(dpath, false))
{
foreach (String line in lines)
writer.WriteLine(line);
}
}
MessageBox.Show("CSV file successfully processed :\n");
}