• webapi 导出CSV文件


    /// JS脚本

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

    /// Action 代码

    [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;
      }
    }

  • 相关阅读:
    C语言利用fgetc复制拷贝文件内容
    linux 安装gcc 和 g++
    C宏定义和使用
    C的realloc的动态分配扩展和缩小内存
    C用malloc 向系统申请一个大小为n*4个字节的内存块
    GDB core命令的使用调试段错误
    GDB的安装
    C字符指针数组的使用
    C二维字符数组的使用及如何获取二维数组的总行数和总列数!
    C二维数组用指针地址遍历
  • 原文地址:https://www.cnblogs.com/wangye520/p/10244324.html
Copyright © 2020-2023  润新知