ASP.NET WebAPI导出CSV_实用技巧

一、JS脚本

window.open("../Ticket/ExportTicket");

二、后台实现代码

[HttpGet]  public ActionResult ExportTicket(TicketSearch search)  {    if (search != null)    {      search.CurrentPage = 1;      search.PageSize = 0;    }    string[] lstTitles = new string[] { "编号", "标题"};        int TotalCount = 0;    List<TicketData> lstTicketData = ListTicketEntityToData(search, out TotalCount);    List<string[]> lstData = new List<string[]>();    foreach (TicketData itemData in lstTicketData)    {      string[] data = new string[]    {    itemData.Barcode,    itemData.Label,    itemData.SiteId.ToString(),    Helper.Htmlhelper.GetSiteInfo(itemData.SiteId),    itemData.Owner,    string.IsNullOrEmpty(itemData.CardId) ? "" : itemData.CardId,    itemData.StartDate == null ? "" : itemData.StartDate.Value.ToString("yyyy-MM-dd HH:mm"),    itemData.EndDate == null ? "" : itemData.EndDate.Value.ToString("yyyy-MM-dd HH:mm"),    itemData.IsValid.ToString(),    itemData.IsUsed.ToString(),    itemData.CreateTime.ToString("yyyy-MM-dd HH:mm")    };    lstData.Add(data);    }    string ExportFileName = Helper.ImportExport.ExportData(lstTitles, lstData);    return File(new System.IO.FileStream(ExportFileName, System.IO.FileMode.Open), "application/octet-stream", "Ticket" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv");  }    public static string ExportData(string[] lstTitles, List<string[]> lstData)  {    try    {      lock (RunningExport)      {        string TemplatePath = AppDomain.CurrentDomain.BaseDirectory + "Export";        string FullFileName = AppDomain.CurrentDomain.BaseDirectory + "Export\\template.csv";        if (Directory.Exists(TemplatePath))        {          if (File.Exists(FullFileName))          File.Delete(FullFileName);        }        else        {          Directory.CreateDirectory(TemplatePath);        }          if (lstTitles.Length <= 0)        {          return null;        }          FileStream fs = new FileStream(FullFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);        StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);        string data = "";          foreach (string itemTitle in lstTitles)        {          data += itemTitle + ",";        }        sw.WriteLine(data.TrimEnd(','));          foreach (string[] itemData in lstData)        {          data = "";          foreach (string itemChildData in itemData)          {            data += itemChildData + ",";          }          sw.WriteLine(data.TrimEnd(','));        }        sw.Close();        fs.Close();        return FullFileName;      }    }    catch (Exception)    {      return null;    }  }