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

         /// <summary>
/// 下载
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
public void Download(DateTime? startTime, DateTime? endTime)
{
Response<VSysLog> _rsp = new Response<VSysLog>();
try
{
using (NetEntities et = new NetEntities())
{
startTime = startTime == null ? DateTime.Now.AddMonths(-) : startTime.Value;
endTime = endTime == null ? DateTime.Now : endTime.Value;
int deviceType = (int)EnumDeviceType.网关设备; //搜索条件
var whereQuery = PredicateExtensions.True<net_warninglog>();
//搜索条件---开始时间和结束时间
whereQuery = whereQuery.And(n => n.WarningTime >= startTime && n.WarningTime <= endTime);
//搜索条件---设备类型
whereQuery = whereQuery.And(n => n.DeviecType == deviceType);
//搜索条件---模糊查询
if (!string.IsNullOrEmpty(Request["condition"]))
{
string condition = Request["condition"];
whereQuery = whereQuery.And(n => n.WarningSource.Contains(condition));
}
List<VWarningLog> logList = et.net_warninglog.Where(whereQuery.Compile()).AsEnumerable().Select(n =>
new VWarningLog
{
id = n.ID,
warningName = n.WarningName,
warningReason = n.WarningReason,
deviceType = Enum.GetName(typeof(EnumDeviceType), n.DeviecType),
warningSource = n.WarningSource,
descr = n.Descr,
warningTime = n.WarningTime.ToString("yyyy-MM-dd HH:mm:ss")
}).OrderByDescending(x => x.warningTime).ToList(); System.IO.StringWriter sw = new StringWriter();
StringBuilder sbTitle = new StringBuilder();
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
//定义模版(标题、内容字段、格式化参数)
string[,] template = new string[,] {{ "终端编号,", "warningSource", "{0}"}, { "设备类型,", "deviceType", "{0}" }, { "报警原因,", "warningReason", "{0}"},
{ "报警信息,", "warningName", "{0}" }, { "描述", "descr", "{0}" }, { "报警时间", "warningTime", "{0}" } };
string strLine = "";
sw = new StringWriter();
//获取模板的行数
int colCount = template.GetLength();
//表头
for (int i = ; i < colCount; i++)
{
//在模板里面已经添加了逗号
strLine += template[i, ];
}
strLine.Remove(strLine.Length - );
sw.WriteLine(strLine);
strLine = ""; //表的内容
for (int j = ; j < logList.Count; j++)
{
strLine = "";
for (int k = ; k < colCount; k++)
{
if (k > && k < colCount)
{
strLine += ",";
}
string cell = "";
string data = string.Format(template[k, ], logList[j].GetType().GetProperty(template[k, ]).GetValue(logList[j], null));
if (string.IsNullOrEmpty(data))
{
strLine += "";
}
else
{
//前面加的单引号则是防止数字被转换成其它格式
cell = "'" + data.Trim();
}
//防止里面含有特殊符号
if (!string.IsNullOrEmpty(cell))
{
cell = cell.Replace("\"", "\"\"");
cell = "\"" + cell + "\"";
strLine += cell;
}
}
sw.WriteLine(strLine);
}
string attachment = "attachment; filename=" + DateTime.Now.ToString("yyyy年MM月dd日HH点") + "网关报警日志.csv";
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "text/csv";
Response.AddHeader("Pragma", "public");
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.HeaderEncoding = System.Text.Encoding.UTF8;
//防止中文乱码
Response.BinaryWrite(new byte[] { 0xEF, 0xBB, 0xBF });
response.Write(sw.ToString());
Response.End();
sw.Close();
}
}
catch (Exception ex)
{
_rsp.code = (int)EnumCode.程序异常;
_rsp.msg = ex.Message;
LogHelper.WriteLog(className, "Download", ex);
}
}

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

C#下载csv代码总结的更多相关文章

  1. 利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码

    利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码 2014-07-31 12:53 1047人阅读 评论(0) 收藏  ...

  2. 使用JavaScript下载csv文件

    前端可以使用JavaScript在客户端下载包含页面数据的文件,这里以下载CSV格式文件为例,代码如下: function downloadData(data, filename, type) { v ...

  3. js实现使用文件流下载csv文件

    1. 理解Blob对象 在Blob对象出现之前,在javascript中一直没有比较好的方式处理二进制文件,自从有了Blob了,我们就可以使用它操作二进制数据了.现在我们开始来理解下Bolb对象及它的 ...

  4. 108.生成和下载csv文件

    生成CSV文件 有时候我们做的网站,需要将一些数据,生成一个csv文件返回浏览器,并且是作为附件的形式下载下来. 生成小的csv文件: 生成一个小的csv文件,我们用Python内置的csv模块来处理 ...

  5. PHP生成迅雷、快车、旋风等软件的下载链接代码实例

    PHP生成迅雷.快车.旋风等软件的下载链接代码实例 <?php function Download() { $urlodd=explode('//',$_POST["url" ...

  6. LINUX安装SVN+添加自动同步+远程下载最新代码

    LINUX安装SVN+添加自动同步+远程下载最新代码---------------------1. 新建一个用户:svnroot ,以下操作非特别说明皆为root用户操作--------------- ...

  7. 关于无法全然下载CyanogenMod代码的问题

    CyanogenMod真的是一个奇妙的东东,它让开发手机固件不再是手机生产商的专利,每一个有志于此的程序猿都可能为自己的手机定制一份专有的,独一无二的固件,这在曾经是想都不敢想的. 而且Cyanoge ...

  8. eclipse 中git无法https下载提交代码

    使用eclipse下载github代码时,报错信息为cannot open git-upload-pack,如下图: 其实就是ssl协议的版本不对, 2018年2月8日后禁止通过TLSv1.1协议连接 ...

  9. 使maven2在下载依赖包的同时下载其源代码包。

    使maven2在下载依赖包的同时下载其源代码包的方法: 1. 使用maven命令:mvn dependency:sources 下载依赖包的源代码. 2. 使用参数: -DdownloadSource ...

随机推荐

  1. JavaScript实现的图片循环播放

    直接上干货 <html> <head> <title>Banner Cycler</title> <script> var banners ...

  2. Microsoft Surface 2019新品发布会汇总

    Microsoft Surface 2019 新品发布会汇总 10月2日晚,微软举行了Microsoft Surface 2019秋季新品发布会,本次发布会涉及如下设备内容等: SurfaceLapt ...

  3. CentOS最小化安装后找不到ifconfig命令

    1.ifconfig命令是设置或显示网络接口的程序,可以显示出我们机器的网卡信息, 可是有些时候最小化安装CentOS等Linux发行版的时候会默认不安装ifconfig等命令, 这时候你进入终端,运 ...

  4. 201871010126 王亚涛 《面向对象程序设计(Java)》第十周实验总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  5. 多线程(三)多线程同步_基本介绍及mutex互斥体

    同步进制的引入为了解决以下三个主要问题:1.控制多个线程之间对共享资源访问,保证共享资源的完整性例如:线程A对共享资源进行写入,线程B读取共享资源2.确保多个线程之间的动作以指定的次序发生例如:线程B ...

  6. 为什么要使用token,token与session区别是什么

    目录 一.session的状态保持及弊端 二.token认证机制 一.session的状态保持及弊端 当用户第一次通过浏览器使用用户名和密码访问服务器时,服务器会验证用户数据,验证成功后在服务器端写入 ...

  7. 使用表格 代替 txt文件(未完结)

    使用xlrd读取用户数据 首先创建一个xls文件 xlrd模块的简单使用 添加处理execl的接口: 使用excel生成测试报表

  8. 页面配置snmp设备有问题,有时候能收到测试团体名的信息,有时候收不到

    现在走的是使用fabric远程连接zabbix服务器,这其中也会耗时间,代码中写的2s不返回数据就提示检查snmp信息失败,不合理, 目前df的server跟show在同一台机器,可以在本地直接调用, ...

  9. <Random> 380 381(hard) 138

    380. Insert Delete GetRandom O(1) class RandomizedSet { ArrayList<Integer> nums; HashMap<In ...

  10. 3.GO-项目结构、包访问权限、闭包和值传递引用传递

    3.1.goland中项目结构 (1)在goland中创建标准Go项目 (2)goland配置 创建项目Learn-Go file-settings-go-GOPATH-添加 在项目目录下创建src目 ...