【问题标题】:C# Add header and new column to a CSV fileC# 将标题和新列添加到 CSV 文件
【发布时间】:2020-03-22 00:52:31
【问题描述】:

我有以下 CSV 文件:

StudentId,FirstName,LastName,DateOfBirth,ImageData
200439932,Bruno,Simoes,07/05/1976,<image converted to Base64 output>

我需要在标题末尾添加一个名为“Image”的新标题,并在新列上重复转换为 base 64 的图像。我已经能够将图像作为 base64 转换为变量,并在下面的两行 colde 中读取:

var base64String = Convert.ToBase64String(File.ReadAllBytes(Constants.Locations.localImage));

string csvDataDump = File.ReadAllText(Constants.Locations.localInfo);

如何将标题和数据添加到 csv 文件?

【问题讨论】:

  • 使用File.ReadAllLines()而不是ReadAllText(),将“,columnName”附加到数组的第一项(即第一行),遍历剩余的数组元素并附加“,base64String” ,然后使用File.WriteAllLines()将数据写回磁盘。
  • 谢谢,我可以把它改成这样的数组:``` String [] csvDataDump = File.ReadAllLines(Constants.Locations.localInfo); ``` 现在试图弄清楚如何循环和添加新列。
  • 有 CSV 文件阅读器。他们可能会有所帮助,您的用例非常简单,@ahmedab​​delhameed 的建议就是您所需要的。阅读如何循环数组。您可能想要使用for 而不是foreach。添加尾随字段后,将每个修改的行添加到 List&lt;string&gt;,然后将修改后的行写入新文件。
  • 我现在只需要添加一个逗号分隔第一个和第二个 base 64 图像:``` var base64String = Convert.ToBase64String(File.ReadAllBytes(Constants.Locations.localImage));列表 csvDataDump = File.ReadAllLines(Constants.Locations.localInfo).ToList(); csvDataDump[0] += ",图像"; csvDataDump[1] += base64String; File.WriteAllLines(Constants.Locations.localInfo, csvDataDump); ``` 它正在使用此代码。

标签: c# csv header add


【解决方案1】:

以下更改有效。他们在一个循环中检查文件是否存在,如果没有,他们首先从 FTP 站点下载文件,然后将新列和 Image 添加到 Base64 行。

List<string> csvDataDump = File.ReadAllLines(Constants.Locations.localInfo).ToList();

csvDataDump[0] += ",Image";
csvDataDump[1] += "," + base64String;

File.WriteAllLines(Constants.Locations.localInfo, csvDataDump);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    相关资源
    最近更新 更多