一部のデータにコンマ (残高列) が含まれる CSV があります。
この列を削除できるようにする必要があります..だから、このようなもの
delete column where title = "balance"
しかし、コードで。
これを行う簡単な方法はありますか、それとも毎回Excelで起動したほうがよいでしょうか..
一般に、利用可能なCSV パーサーを使用する必要があります。そうしないと、車輪の再発明になります。たとえば、データにはセパレーターも含まれている可能性があると考えてください。
ただし、単純な方法は、この列以外をすべてロードすることです。
string[] csvLines = File.ReadAllLines("csvFile.txt");
string header = csvLines.FirstOrDefault(l => !String.IsNullOrWhiteSpace(l));
if(header != null)
{
int balanceIndex =Array.FindIndex<string>(header.Split(new[]{','}, StringSplitOptions.RemoveEmptyEntries)
, col => col.Equals("balance", StringComparison.OrdinalIgnoreCase));
if(balanceIndex >= 0)
{
var allButBalanceCols = csvLines
.Select(l => new {Columns = l.Split(new[]{','}, StringSplitOptions.None) })
.Where(x => x.Columns.Length > balanceIndex)
.Select(x => string.Join(",", x.Columns
.Where((col, index) => index != balanceIndex)
.Select(col => col.Trim())));
// rewrite the file with all columns but balance:
File.WriteAllLines("csvFile.txt", allButBalanceCols);
}
}
問題の複雑さに応じて、選択肢はほとんどありません。最も単純なものからより強力なものまでリスト:
まず、このようなものを使用してCSVを読み取る必要があります
using System;
using System.IO;
class Program
{
static void Main()
{
String[] values = File.ReadAllText(@"d:\test.csv").Split(',');
}
}
次に、n 番目の列を削除し、String.Join()メソッドを使用して CSV ファイルとしてプッシュする必要があります。