当前有一个DataTable,但希望通过WebHandler将其流式传输给用户。 FileHelpers有CommonEngine.DataTableToCsv(dt, "file.csv")
。但它将其保存到文件中。我怎样才能将它保存到流?当我知道高级中的列或者他们没有更改时我知道该怎么做,但我想直接从数据表中生成列标题。将DataTable转换为CSV流
如果我知道这个栏目我刚刚创建类:
[DelimitedRecord(",")]
public class MailMergeFields
{
[FieldQuoted()]
public string FirstName;
[FieldQuoted()]
public string LastName;
}
然后使用FileHelperEngine并添加记录:
FileHelperEngine engine = new FileHelperEngine(typeof(MailMergeFields));
MailMergeFields[] merge = new MailMergeFields[dt.Rows.Count + 1];
// add headers
merge[0] = new MailMergeFields();
merge[0].FirstName = "FirstName";
merge[0].LastName = "LastName";
int i = 1;
// add records
foreach (DataRow dr in dt.Rows)
{
merge[i] = new MailMergeFields();
merge[i].FirstName = dr["Forename"];
merge[i].LastName = dr["Surname"];
i++;
}
最后写入流:
TextWriter writer = new StringWriter();
engine.WriteStream(writer, merge);
context.Response.Write(writer.ToString());
不幸的是,由于我之前并不了解专栏,所以我无法事先创建课程。
您可以检查此https://gist.github.com/riyadparvez/4467668 – user 2013-03-12 06:53:13
文件助手库是开源的。你为什么不破解它并添加你自己的方法? – Keltex 2009-05-20 14:19:23
@user:这个要点包含一个错误,其中包含逗号的条目将无法正确处理。请参阅http://stackoverflow.com/q/769621/1461424 – Krumia 2016-12-29 13:02:08