【问题标题】:Append columns to .csv using StreamReader and StreamWriter使用 StreamReader 和 StreamWriter 将列附加到 .csv
【发布时间】:2019-06-11 20:25:21
【问题描述】:

我正在读取和写入一些存储在 Azure Blob 存储中的 csv 文件。

这些文件有标题,我想在文件中添加 2 个带有已定义标题和值的附加列,并将它们写入另一个位置。 我正在使用 StreamReader 和 StreamWriter 来读取和写入文件,但是在附加时遇到了困难,就像我通常使用 File.ReadLines 方法。

新列和关联值是我希望写入新 blob 的内容,如下所示。

|A栏|B栏|C栏|新栏目 1 |新栏目 2 | |--------|--------|---------|--------------|------ --------| | 1 | 2 | 3 |新价值 |新价值 | | 4 | 5 | 6 |新价值 |新价值 |

*EDIT -- 在下面添加代码,突出显示我想要的功能,但由于使用流而受到限制

变量 csv = File.ReadLines(rawfilePath).Select((line, index) => index == 0 ?行 + ",订单" : 行 + "," + index.ToString()) .ToList(); File.WriteAllLines(processedfilePath, csv);

【问题讨论】:

  • 到目前为止你尝试过什么?你的代码在哪里?
  • @JuanR 我可以设法附加到 csv 的底部并使用 StreamReader 和 StreamWriter 写入不同的目录
  • CSV 不仅仅是附加文本。 New Column 1New Column 2 的数据类型是什么?
  • @JuanR 两个字符串

标签: c# .net azure-blob-storage


【解决方案1】:

我认为使用类更容易操作,您可以使用任何适用于 CSV(反)序列化的库并按照以下方式进行操作:

  • 创建代表行的类
  • 添加你想要的列(属性到类)
  • 下载 CSV 并将其反序列化为类对象数组
  • 用数据填充新列(反序列化后它们将具有 null 或默认值)
  • 将对象数组序列化为 CSV 并上传文件

这是一个例子:

https://stackoverflow.com/a/2094885/10496806

【讨论】:

    猜你喜欢
    • 2013-12-17
    • 2011-11-10
    • 2012-02-22
    • 2014-05-22
    • 2019-02-26
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 2017-03-23
    相关资源
    最近更新 更多