簡體   English   中英

在C#中使用CsvHelper寫入CSV文件

[英]Write to CSV file using CsvHelper in C#

我試圖在C#中使用CsvHelper寫入CSV文件。 這是庫http://joshclose.github.io/CsvHelper/的鏈接。沒有任何內容發送到csv文件。 我嘗試做“ exportCsv.WriteField("Hello"); “,但仍然沒有任何反應。

List<string> ColumnOne = new List<string>();
List<string> ColumnTwo = new List<string>();
var csvTextWriter = new 
    StreamWriter(@"C:\Users\Public\Documents\ExportTest.csv");
var exportCsv = new CsvWriter(csvTextWriter);
    //creating a list to store workflows then adding name and description to the myWorkflowsList list
   if (myWorkflows.WorkFlowCollection.Any())
   {
        foreach (var Workflow in myWorkflows.WorkFlowCollection)
        {
                    ColumnOne.Add(Workflow.WorkflowName);
                    ColumnTwo.Add(Workflow.WorkflowDescription);
        }
        exportCsv.WriteField(ColumnOne);
        //exportCsv.WriteField(ColumnTwo);
        exportCsv.NextRecord();
        exportCsv.Flush();
        Console.WriteLine("File is saved: 
                C:\\Users\\Public\\Documents\\ExportTest.csv");
        Console.ReadLine();
    }

您的代碼沒有添加任何記錄。 它沒有對WriteRecordsWriteRecord任何調用。 看起來它正在嘗試將整個字符串列表寫入單個字段中。

要將兩列寫到文件中,可以使用`WriteRecords,例如:

var data = from flow in myWorkflows.WorkFlowCollection
           select new { flow.WorkflowName,flow.WorkflowDescription};
using (var writer = new StreamWriter("test.csv"))
using (var csv = new CsvWriter(writer))
{
    csv.WriteRecords(data);
}

這將寫入一個字段名稱為WorkflowNameWorkflowDescription的文件

您可以通過創建一個僅接受所需字段並通過屬性設置名稱等的小類來更改字段的編寫方式:

class Flow
{

    [NameAttribute("Workflow Name")]
    public string WorkflowName { get; set; }
    [NameAttribute("Workflow Description")]
    public string WorkflowDescription { get; set; }

    public Flow(string workflowName, string workflowDescription)
    {
        WorkflowName = workflowName;
        WorkflowDescription = workflowDescription;
    }
}


//...
var data = from flow in myWorkflows.WorkFlowCollection
           select new Flow(flow.WorkflowName,flow.WorkflowDescription);
using (var writer = new StreamWriter("test.csv"))
using (var csv = new CsvWriter(writer))
{
    csv.WriteRecords(data);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM