c#索引超出了范围./写入CSV文件
本文关键字:写入 CSV 文件 范围 索引 | 更新日期: 2023-09-27 18:12:38
嗨,我有个问题…
foreach (string file in files)
{
MessageBox.Show(String.Format("Name: {0}", file));
List<string> newColumnData = new List<string>() { file };
List<string> lines = File.ReadAllLines(file).ToList();
lines[1] += ",Name";
int index = 2;
//add new column value for each row.
lines.Skip(2).ToList().ForEach(line =>
{
//-1 for header
MessageBox.Show(index.ToString());
lines[index] += "," + newColumnData[index - 1];
index++;
});
//write the new content
File.WriteAllLines(file, lines);
}
数据看起来像:(Header有2行)
7/1/2014 to 7/11/2014
Category Trans Date Post Date Merchant Name Amount
Dining Out 6/30/2014 7/1/2014 CLASSICS MARKET CAFE 8.41
Dining Out 7/1/2014 7/2/2014 CHIPOTLE 12.07
Dining Out 7/3/2014 7/6/2014 THAI CUISI 18.24
Groceries 7/2/2014 7/3/2014 FESTIVAL FOODS 12.79
我想添加一个新的列名示例"fileName",其值为"fileName"…只是为了方便。
我在:
lines[index] += "," + newColumnData[index - 1];
处收到相同的错误但是,当通过调试器/MessageBox检查时,index的值永远不会为<0。如何在第一个位置添加新列而不是最后一列?
所以如果你的数据有四行,这意味着你将在循环中获得四次迭代,这意味着它试图从数组newColumnData的数组元素1,2,3和4中获取值。然而,newColumnData只有一个元素,索引为0,对吧?
如果您希望为每一行添加相同的值,则应该将ForEach循环中间的行更改为:
lines[index] += "," + newColumnData[0];
最后,要将它添加到行开头,请这样做:
lines[index] = newColumnData[0] + "," + lines[index];