CSV に変換したいテキスト ファイルがあります。EXCEL インポート ウィザードでファイルを調べると、列と行は次の図のようになります。
ファイルを読み取って .csv としてファイルに書き込むと、強調表示された行に表示されるように、下の画像のようになります。
ファイル内の一部のデータに複数のコンマが含まれていることに気付きました。これは、行データが不足しています。これは私を超えています。
次のコードを使用しています。
class Program
{
static void AddComma(string s, TextWriter writer)
{
foreach (string line in s.Replace("\"", "").Split('\n'))
{
for (int i = 0; i < line.Length; i++)
{
if (i > 0)
writer.Write(line[i]);
}
writer.WriteLine();
}
}
static void Main(string[] args)
{
TextReader reader = new StreamReader(@"C:\folder\sample.txt");
string a = reader.ReadToEnd();
reader.Close();
FileStream aFile = new FileStream(@"C:\folder\sample.csv", FileMode.Create);
AddComma(a, new StreamWriter(aFile));
aFile.Close();
}
}
見つかったソリューションの更新:
次のコード行を変更しただけです。Replace() メソッドを削除しました。
これから:foreach (string line in s.Replace("\"", "").Split('\n'))
これに:foreach (string line in s.Split('\n'))
また、配列はゼロから始まるので、カウンターまたは int の開始点を変更しました: これの代わりに意味:
for (int i = 0; i < line.Length; i++)
私はこれを持っています:
for (int i = -1; i < line.Length; i++)
{
if (i > -1)
writer.Write(line[i]);
}
これにより、ゼロから始まるファイルの最初の列も確実に取得されます。
みんな、ありがとう。