zoukankan      html  css  js  c++  java
  • C#下载csv代码总结

    一、C#导出csv格式代码如下:

      1         /// <summary>
      2         /// 下载
      3         /// </summary>
      4         /// <param name="startTime"></param>
      5         /// <param name="endTime"></param>
      6         public void Download(DateTime? startTime, DateTime? endTime)
      7         {
      8             Response<VSysLog> _rsp = new Response<VSysLog>();
      9             try
     10             {
     11                 using (NetEntities et = new NetEntities())
     12                 {
     13                     startTime = startTime == null ? DateTime.Now.AddMonths(-2) : startTime.Value;
     14                     endTime = endTime == null ? DateTime.Now : endTime.Value;
     15                     int deviceType = (int)EnumDeviceType.网关设备;
     16 
     17                     //搜索条件
     18                     var whereQuery = PredicateExtensions.True<net_warninglog>();
     19                     //搜索条件---开始时间和结束时间
     20                     whereQuery = whereQuery.And(n => n.WarningTime >= startTime && n.WarningTime <= endTime);
     21                     //搜索条件---设备类型
     22                     whereQuery = whereQuery.And(n => n.DeviecType == deviceType);
     23                     //搜索条件---模糊查询
     24                     if (!string.IsNullOrEmpty(Request["condition"]))
     25                     {
     26                         string condition = Request["condition"];
     27                         whereQuery = whereQuery.And(n => n.WarningSource.Contains(condition));
     28                     }
     29                     List<VWarningLog> logList = et.net_warninglog.Where(whereQuery.Compile()).AsEnumerable().Select(n =>
     30                                           new VWarningLog
     31                                           {
     32                                               id = n.ID,
     33                                               warningName = n.WarningName,
     34                                               warningReason = n.WarningReason,
     35                                               deviceType = Enum.GetName(typeof(EnumDeviceType), n.DeviecType),
     36                                               warningSource = n.WarningSource,
     37                                               descr = n.Descr,
     38                                               warningTime = n.WarningTime.ToString("yyyy-MM-dd HH:mm:ss")
     39                                           }).OrderByDescending(x => x.warningTime).ToList();
     40 
     41                     System.IO.StringWriter sw = new StringWriter();
     42                     StringBuilder sbTitle = new StringBuilder();
     43                     System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
     44                     //定义模版(标题、内容字段、格式化参数)
     45                     string[,] template = new string[,] {{ "终端编号,", "warningSource", "{0}"}, { "设备类型,", "deviceType", "{0}" }, { "报警原因,", "warningReason", "{0}"},
     46                                                                         { "报警信息,", "warningName", "{0}" }, { "描述", "descr", "{0}" }, { "报警时间", "warningTime", "{0}" } };
     47                     string strLine = "";
     48                     sw = new StringWriter();
     49                     //获取模板的行数
     50                     int colCount = template.GetLength(0);
     51                     //表头    
     52                     for (int i = 0; i < colCount; i++)
     53                     {
     54                         //在模板里面已经添加了逗号
     55                         strLine += template[i, 0];
     56                     }
     57                     strLine.Remove(strLine.Length - 1);
     58                     sw.WriteLine(strLine);
     59                     strLine = "";
     60 
     61                     //表的内容  
     62                     for (int j = 0; j < logList.Count; j++)
     63                     {
     64                         strLine = "";
     65                         for (int k = 0; k < colCount; k++)
     66                         {
     67                             if (k > 0 && k < colCount)
     68                             {
     69                                 strLine += ",";
     70                             }
     71                             string cell = "";
     72                             string data = string.Format(template[k, 2], logList[j].GetType().GetProperty(template[k, 1]).GetValue(logList[j], null));
     73                             if (string.IsNullOrEmpty(data))
     74                             {
     75                                 strLine += "";
     76                             }
     77                             else
     78                             {
     79                                 //前面加的单引号则是防止数字被转换成其它格式    
     80                                 cell = "'" + data.Trim();
     81                             }
     82                             //防止里面含有特殊符号
     83                             if (!string.IsNullOrEmpty(cell))
     84                             {
     85                                 cell = cell.Replace(""", """");
     86                                 cell = """ + cell + """;
     87                                 strLine += cell;
     88                             }
     89                         }
     90                         sw.WriteLine(strLine);
     91                     }
     92                     string attachment = "attachment; filename=" + DateTime.Now.ToString("yyyy年MM月dd日HH点") + "网关报警日志.csv";
     93                     Response.Clear();
     94                     Response.ClearHeaders();
     95                     Response.ClearContent();
     96                     Response.AddHeader("content-disposition", attachment);
     97                     Response.ContentType = "text/csv";
     98                     Response.AddHeader("Pragma", "public");
     99                     Response.Charset = "UTF-8";
    100                     Response.ContentEncoding = System.Text.Encoding.UTF8;
    101                     Response.HeaderEncoding = System.Text.Encoding.UTF8;
    102                     //防止中文乱码  
    103                     Response.BinaryWrite(new byte[] { 0xEF, 0xBB, 0xBF });
    104                     response.Write(sw.ToString());
    105                     Response.End();
    106                     sw.Close();
    107                 }
    108             }
    109             catch (Exception ex)
    110             {
    111                 _rsp.code = (int)EnumCode.程序异常;
    112                 _rsp.msg = ex.Message;
    113                 LogHelper.WriteLog(className, "Download", ex);
    114             }
    115         }

    仅作为保存,方便日后查看代码。

  • 相关阅读:
    第10组 Beta冲刺(4/4)
    第10组 Beta冲刺(3/4)
    第10组 Beta冲刺(2/4)
    第10组 Beta冲刺(1/4)
    第10组 Alpha冲刺(4/4)
    租房这件事
    idea中的maven工程,有的项目名称显示粗体,有的显示中括号
    win10电脑版微信数字输入的间隔变大解决办法
    在实体类中添加了@ApiModel不起作用
    为数字字符串加上千分位符号
  • 原文地址:https://www.cnblogs.com/jas0203/p/10364228.html
Copyright © 2011-2022 走看看