當前有一個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