ASP.NET WebAPI导出CSV_实用技巧

2022年5月5日09:26:34

一、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;
  }
}
  • 作者:農碼一生  
  • 原文链接:https://www.cnblogs.com/wml-it/p/16048927.html
    更新时间:2022年5月5日09:26:34 ,共 2309 字。