gpt4 book ai didi

c# - 在 C# 中使用 CSVHelper 更改 CSV 文件中标题的名称

转载 作者:行者123 更新时间:2023-12-03 14:11:55 25 4
gpt4 key购买 nike

我正在使用 CSV Helper 库为用户生成 CSV 文件
填充并上传到系统中。我的问题是 WriteHeader 方法只写入名称类似于“PropertyValue”的类的属性,这对用户不友好。有没有一种方法可以使生成的文本对用户友好,但仍然能够成功地将类映射到文件数据?

我的代码如下所示:

public ActionResult UploadPropertyCSV(HttpPostedFileBase file)
{
List<PropertyModel> properties = new List<PropertyModel>();
RIMEDb dbContext = new RIMEDb();
bool success = false;
foreach (string requestFiles in Request.Files)
{
if (file != null && file.ContentLength > 0 && file.FileName.EndsWith(".csv"))
{
using(StreamReader str = new StreamReader(file.InputStream))
{
using(CsvHelper.CsvReader theReader = new CsvHelper.CsvReader(str))
{
while (theReader.Read())
{
RIMUtil.PropertyUploadCSVRowHelper row = new RIMUtil.PropertyUploadCSVRowHelper()
{
UnitNumber = theReader.GetField(0),
StreetNumber = theReader.GetField(1),
StreetName = theReader.GetField(2),
AlternateAddress = theReader.GetField(3),
City = theReader.GetField(4)
};

Property property = new Property();
property.UnitNumber = row.UnitNumber;
property.StreetNumber = row.StreetNumber;
property.StreetName = row.StreetName;
property.AlternateAddress = row.AlternateAddress;
property.City = dbContext.PostalCodes.Where(p => p.PostalCode1 == row.PostalCode).FirstOrDefault().City;

dbContext.Properties.Add(property);
try
{
dbContext.SaveChanges();
success = true;
}
catch(System.Data.Entity.Validation.DbEntityValidationException ex)
{
success = false;
RIMUtil.LogError("Ptoblem validating fields in database. Please check your CSV file for errors.");
}
catch(Exception e)
{
RIMUtil.LogError("Error saving property to database. Please check your CSV file for errors.");
}
}
}
}
}
}
return Json(success);
}

我想知道是否有一些元数据标签或者我可以在我的 PropertyUploadCSVRowHelper 类中的每个属性之上放置一些我想要在文件中生成的文本

提前致谢

最佳答案

不确定这是否在 2 年前存在,但现在,我们可以使用以下属性函数更改属性/列名称:

[CsvHelper.Configuration.Attributes.Name("Column/Field Name")] 

完整代码:
using CsvHelper;
using System.Collections.Generic;
using System.IO;

namespace Test
{
class Program
{
class CsvColumns
{
private string column_01;

[CsvHelper.Configuration.Attributes.Name("Column 01")] // changes header/column name Column_01 to Column 01
public string Column_01 { get => column_01; set => column_01 = value; }
}

static void Main(string[] args)
{
List<CsvColumns> csvOutput = new List<CsvColumns>();
CsvColumns rows = new CsvColumns();
rows.Column_01 = "data1";
csvOutput.Add(rows);

string filename = "test.csv";
using (StreamWriter writer = File.CreateText(filename))
{
CsvWriter csv = new CsvWriter(writer);
csv.WriteRecords(csvOutput);
}
}
}
}

关于c# - 在 C# 中使用 CSVHelper 更改 CSV 文件中标题的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38044320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com