簡體   English   中英

csvhelper:如何在 C# 上的現有 csv 上編寫特定的“單元格”?

[英]csvhelper: how to write a specific "cell" on an existing csv on C#?

我有一個 csv 格式的客戶列表,我用它來發送電子郵件。 我想在執行每一行后寫入 CSV 以放置條件規則。 我正在使用 csvhelper 來操作文件。 這是代碼:

var scan = new StreamReader(myBlob);
var csvv = new CsvReader(scan, CultureInfo.InvariantCulture);
var records = csvv.GetRecords<Records>().ToList();
var scanwriter = new StreamWriter(myBlob4);
var csvwriter = new CsvWriter(scanwriter, CultureInfo.InvariantCulture);

foreach (Records record in records)
{
                
    var from = new EmailAddress("example.com", "John");
    var to = new EmailAddress(record.Email, record.Name);
            
    var subject = "exapmple";

    var msg = MailHelper.CreateSingleEmail(from, to, subject, txtf, htmlf);

    StringBuilder text = new StringBuilder();
    text.AppendFormat("sent", record.EmailSent);
                
    csvwriter.WriteField(record.EmailSent);
    csvwriter.NextRecord();
                
            
    var response = await client.SendEmailAsync(msg);
}

但是,我的 csv 沒有將“已發送”值附加到 emailsent 列下的文件中。 我正在使用 StringBuilder,這在這種情況下可能沒有幫助。

看起來你正在嘗試做更多這樣的事情。

void Main()
{
    var records = new List<SendEmail>
    {
        new SendEmail{ Email = "example.com", Name = "John" },
        new SendEmail{ Email = "example2.com", Name = "Jenny" }
    };
    var csvwriter = new CsvWriter(Console.Out, CultureInfo.InvariantCulture);
    
    foreach (var record in records)
    {
//      var from = new EmailAddress("example.com", "John");
//      var to = new EmailAddress(record.Email, record.Name);
//
//      var subject = "exapmple";
//
//      var msg = MailHelper.CreateSingleEmail(from, to, subject, txtf, htmlf);

        record.EmailSent = "sent";
        
        csvwriter.WriteRecord(record);
        csvwriter.NextRecord();

        //var response = await client.SendEmailAsync(msg);
    }
}

public class SendEmail
{
    public string Email { get; set; }
    public string Name { get; set; }
    public string EmailSent { get; set; }
}
//using blocks will make sure the streams and disposed and file handles are closed properly,
// **even if an exception is thrown **
using(var scan = new StreamReader(myBlob))
using (var csvv = new CsvReader(scan, CultureInfo.InvariantCulture))
using (var scanwriter = new StreamWriter(myBlob4))
using (var csvwriter = new CsvWriter(scanwriter, CultureInfo.InvariantCulture))
{
    var records = csvv.GetRecords<Records>(); //ToList() was not needed or helpful here
    foreach (var record in records)
    {               
        var from = new EmailAddress("example.com", "John");
        var to = new EmailAddress(record.Email, record.Name);
            
        var subject = "example";
        var msg = MailHelper.CreateSingleEmail(from, to, subject, txtf, htmlf);
                
        csvwriter.WriteField($"sent {record.EmailSent}");
        csvwriter.NextRecord();           
            
        var response = await client.SendEmailAsync(msg);
    }
}

暫無
暫無

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

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