[英]how to export to csv file as it is shown in grid using mvc c#
我有一個網格,其中包括文件列和標頭,如下所示:
List<string> eventResult = (from c in DB.Events
where (c.m_turbine_id == turbineid.turbineID) && (c.m_time_stamp >= frmDate && c.m_time_stamp <= toDate)
select new EventLogPartialViewModel
{
Timestamp = c.m_time_stamp,
Description = c.m_event_log_description,
WindSpeed = c.m_wind_speed,
RPM = c.m_rpm,
Power = c.m_power
}).ToList().Select(x =>
x.Timestamp.ToString("dd/MM/yyyy H:mm:ss") + "," +
x.Description + "," +
x.WindSpeed + "," +
x.RPM + "," +
x.Power)
.ToList();
我使用以下轉換來獲取CSV文件:
string sss=string.Join(",",eventResult.ToArray());
byte[] csvBytes = ASCIIEncoding.ASCII.GetBytes(sss);
我在這里出口:
return this.File(csvBytes, "text/csv",".csv");
當我打開文件時,標題丟失並且我的所有數據都在一行中,而不是像網格一樣
您在上一個select
語句中已經用逗號加入了字段,因此最終的Join
應該用換行。
string sss = string.Join(Environment.NewLine, eventResult.ToArray());
通常,我使用CsvHelper生成csv文件,因為我不想在輸入字符串中驗證或轉義雙引號和逗號。 這些是非常常見的字符,可能會破壞文件。
包含標頭的完整代碼是:
string header = "Timestamp,Description,WindSpeed,RPM,Power";
string rows = string.Join(Environment.NewLine, eventResult.ToArray());
byte[] csvBytes = ASCIIEncoding.ASCII.GetBytes(header + Environment.NewLine + rows);
return File(csvBytes, "text/csv", ".csv");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.