C#下载csv代码总结

Stella981
• 阅读 585

一、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         }

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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Java修道之路,问鼎巅峰,我辈代码修仙法力齐天
<center<fontcolor00FF7Fsize5face"黑体"代码尽头谁为峰,一见秃头道成空。</font<center<fontcolor00FF00size5face"黑体"编程修真路破折,一步一劫渡飞升。</font众所周知,编程修真有八大境界:1.Javase练气筑基2.数据库结丹3.web前端元婴4.Jav
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这