C#下载csv代码总结
一、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代码总结的更多相关文章
- 利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码
利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码 2014-07-31 12:53 1047人阅读 评论(0) 收藏 ...
- 使用JavaScript下载csv文件
前端可以使用JavaScript在客户端下载包含页面数据的文件,这里以下载CSV格式文件为例,代码如下: function downloadData(data, filename, type) { v ...
- js实现使用文件流下载csv文件
1. 理解Blob对象 在Blob对象出现之前,在javascript中一直没有比较好的方式处理二进制文件,自从有了Blob了,我们就可以使用它操作二进制数据了.现在我们开始来理解下Bolb对象及它的 ...
- 108.生成和下载csv文件
生成CSV文件 有时候我们做的网站,需要将一些数据,生成一个csv文件返回浏览器,并且是作为附件的形式下载下来. 生成小的csv文件: 生成一个小的csv文件,我们用Python内置的csv模块来处理 ...
- PHP生成迅雷、快车、旋风等软件的下载链接代码实例
PHP生成迅雷.快车.旋风等软件的下载链接代码实例 <?php function Download() { $urlodd=explode('//',$_POST["url" ...
- LINUX安装SVN+添加自动同步+远程下载最新代码
LINUX安装SVN+添加自动同步+远程下载最新代码---------------------1. 新建一个用户:svnroot ,以下操作非特别说明皆为root用户操作--------------- ...
- 关于无法全然下载CyanogenMod代码的问题
CyanogenMod真的是一个奇妙的东东,它让开发手机固件不再是手机生产商的专利,每一个有志于此的程序猿都可能为自己的手机定制一份专有的,独一无二的固件,这在曾经是想都不敢想的. 而且Cyanoge ...
- eclipse 中git无法https下载提交代码
使用eclipse下载github代码时,报错信息为cannot open git-upload-pack,如下图: 其实就是ssl协议的版本不对, 2018年2月8日后禁止通过TLSv1.1协议连接 ...
- 使maven2在下载依赖包的同时下载其源代码包。
使maven2在下载依赖包的同时下载其源代码包的方法: 1. 使用maven命令:mvn dependency:sources 下载依赖包的源代码. 2. 使用参数: -DdownloadSource ...
随机推荐
- 2.GoF 的 23 种设计模式的分类和功能
1. 根据目的来分 根据模式是用来完成什么工作来划分,这种方式可分为创建型模式.结构型模式和行为型模式 3 种. 创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”.GoF ...
- Placeholder_2:0 is both fed and fetched
Placeholder_2:0 is both fed and fetched TensorFlow出现这个错误是因为网络的输入被原样输出,也就是说同一个东西既被输入网络,又被输出网络.
- JS高阶---对象创建模式(5种)
[前言] 函数高级部分先看到这里,接下里看下面向对象高级部分 .对象创建模式 .继承模式 [主体] (1)Object构造函数模式 案例如下: 测试结果如右图所示 (2)对象字面量形式创建 案例如下: ...
- 201871010105-曹玉中《面向对象程序设计(java)》第十四周学习总结
201871010105-曹玉中<面向对象程序设计(java)>第十四周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- 曹玉中-201871010105《面向对象程序设计(java)》第6-7周学习总结
曹玉中-201871010105<面向对象程序设计(java)>第6-7周学习总结 项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.c ...
- vs解决方案文件出错
问题描述: 电脑死机,重启电脑后打开解决方案,提示“选择的文件不是有效的解决方案文件” 解决方案: 1. 先用记事本打开这个解决方案查看下,发现其中内容变成空白了? 2. 打开项目中的xxxx.vcx ...
- day14_7.16 模块
一.模块 1.什么是模块? 模块就是一系列功能的结合体. 模块的三种来源: 1.内置的,也就是python解释器自带的,可以直接导入 2.第三方的,需要下载的 3.自定义的,自己写的模块 模块的四种表 ...
- Taro/JS/H5/小程序:纯前端解决小程序微信支付统一下单和调起支付
这个文章不会说具体0到1的代码流程,我会着重讲几个问题的解决 准备以下依赖 "md5": "^2.2.1", "xml-js": " ...
- perfview微软开源的cpu以及内存性能分析工具
perfview 是一个强大的分析工具,能用来分cpu,内存,磁盘io...多种指标,使用简单,功能强大 用来分析windows应用的性能问题,是一个很不错的选择 下载地址 https://githu ...
- Codeforces Round 573 (Div.1) 题解
这场怎么说呢……有喜有悲吧. 开场先秒了 A.看到 B,感觉有点意思,WA 了 2 发后也过了. 此时还在 rk 前 200. 开 C,一看就不可做.跟榜,切 D 人数是 C 的两倍. 开 D.一眼感 ...