我正在使用CSVHelper将DataReader结果写入csv文件,除了我需要手动输入标题名称而不是仅从datareader中提取列名外,一切都运行良好。
所以目前我使用以下内容来获取数据并放置标题:它来自CSVHelper的文档:http://joshclose.github.io/CsvHelper/#misc-faq
while (rdr.Read())
{
if (!hasHeaderBeenWritten)
{
for (var i = 0; i < rdr.FieldCount; i++)
{
csv.WriteField(rdr.GetName(i));
}
csv.NextRecord();
hasHeaderBeenWritten = true;
foreach (var item in dataList)
{
csv.WriteRecord(item);
}
}
for (var i = 0; i < rdr.FieldCount; i++)
{
csv.WriteField(rdr[i]);
}
csv.NextRecord();
}
我基本上是想在我的类允许它返回的3列中添加一个手动名称,而不是上面使用的rdr.GetName(i)方法。
有没有人有任何解决方案?我试过做一个csv.WriteField(“namehere”[i]);这显然不起作用,而是将每个字母跨越三列然后停止。
答案 0 :(得分:1)
问题:“我如何在CSVHELPER中正确添加一个定制标题?”
只需创建一个包含所需列名称的字符串数组,然后使用csv.WriteField(*ARRAYHERE*)[i];
将其传递给每一列,它们将按照它们出现在数组中的顺序添加。
创建数组:
string[] arrayHeader = new string[] { "Header1", "Header2", "Header3" };
将每个列名称传递到:
for (var i = 0; i < rdr.FieldCount; i++)
{
//csv.WriteField(rdr.GetName(i));
csv.WriteField(arrayHeader[i]);
}