当前位置: 首页 > 知识库问答 >
问题:

从C#[duplicate]写入csv文件

孔逸春
2023-03-14

我在文本文件中插入的代码如下:

foreach (var kvauthor in _tauthorData)
{
   foreach (var coAuthor in kvauthor.Value.CoAuthors)
   {
      twObjClus.WriteLine("AuthorID: {0}, AuthorName: {1}, ClusterID: {2}, PaperID: {3},  
                           CoAuthors: {4}, PaperCategory: {5}, Venue: {6}, Year: {4}",  
                           eAuthor.AuthorID, eAuthor.AuthorName, curCluster.GetClusterID(),  
                           kvauthor.Key, coAuthor, kvauthor.Value.PaperCategory,  
                           kvauthor.Value.VenueID, kvauthor.Value.Year);

   }
}  

我想将所有这些数据插入到csv文件中,但我尝试了以下方法:

var csv = new StringBuilder();  

foreach (var kvauthor in _tauthorData)
{
   foreach (var coAuthor in kvauthor.Value.CoAuthors)
   {
      csv.AppendFormat("{0},{1},{2},{3},{4},{5},{6}",AuthorID: {0}, AuthorName: {1}, ClusterID: {2}, PaperID: {3},  
                           CoAuthors: {4}, PaperCategory: {5}, Venue: {6}, Year: {4}",  
                           eAuthor.AuthorID, eAuthor.AuthorName, curCluster.GetClusterID(),  
                           kvauthor.Key, coAuthor, kvauthor.Value.PaperCategory,  
                           kvauthor.Value.VenueID, kvauthor.Value.Year);

   }
}  

如何将此数据逐行插入到带有列标题的csv文件中?

共有1个答案

百里业
2023-03-14

添加列标题是微不足道的,只需做一次(当打开文件或创建实例时,例如StringBuilder,稍后将用于添加行)。

var csv = new StringBuilder();  

// add column headers first
csv.AppendLine("AuthorID,AuthorName, ..."); // and so on

// add data
foreach (var kvauthor in _tauthorData)
    foreach (var coAuthor in kvauthor.Value.CoAuthors)
    {
        csv.AppendLine($"{coAuthor.AuthorId},{coAuthor.Name}, ..."); // and so on
        // if you don't have C# 6.0
        // csv.AppendFormat("{0},{1}, ... {N}", coAuthor.AuthorId, coAuthor.Name, ..., Environmental.NewLine");
    }

File.WriteAllText(path, csv.ToString());

注意:您可以使用AppendLine添加环境。自动换行,否则(如果使用AppendFormat)手动将其添加到string的末尾。

 类似资料:
  • 我正试图找到一种更好的方法将数据写入csv文件。现在,每个循环迭代都会将标题和数据附加到文件中,如下所示 我想修改我的逻辑,以便我只得到像这样的数据。 任何关于我可以改变的建议都非常感谢。谢啦

  • 我正试图用C#语言逐行写入一个文件。这是我的功能 整个函数在一个循环中运行,每一行都应该写入文件。在我的例子中,下一行覆盖现有行,最后,我在csv文件中只得到一条记录,这是最后一条。如何写入文件中的所有行?

  • 我正在尝试编写我的第一个json文件。但由于某种原因,它实际上不会写入文件。我知道它在做一些事情,因为在运行转储之后,我放入文件中的任何随机文本都会被擦除,但它的位置上没有任何东西。不用说,但加载部分抛出和错误,因为那里什么都没有。这难道不应该将所有json文本添加到文件中吗?

  • 问题内容: 将结构转储到提供的csv文件中的惯用golang方法是什么?我在一个func里面,我的结构作为接口{}传递: 为什么要使用界面{}?-从JSON读取数据,可能会返回一些不同的结构,因此尝试编写足够通用的函数。 我的类型的一个例子: 问题答案: 如果您使用具体类型,将会容易得多。您可能想要使用该软件包,这是一个相关示例;https://golang.org/pkg/encoding/cs

  • 我使用opencsv 2.3写入csv文件。 此代码将每行写入单个单元格,例如a_1“28”。 如何将写入第一列,将写入第二列? 更新1:我认为这段代码适用于opencsv 3.1,但似乎不适用于早期版本。

  • 问题内容: 我有一个pandas数据框,我想将其写入CSV文件。我正在使用以下方法: 并得到错误: 有什么方法可以轻松解决此问题(即我的数据框中有Unicode字符)吗?有没有一种方法可以使用例如“ to-tab”方法(我认为不存在)写入制表符分隔文件而不是CSV? 问题答案: 要用制表符分隔,可以使用参数: 要使用特定的编码(例如),请使用参数: