簡體   English   中英

如何使用mvc c#導出到網格中顯示的csv文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM