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 ...
随机推荐
- pycharm 使用Git提交代码到Github
pycharm 使用Git提交代码到Github pytharm 创建django项目,提交到github总是失败,在github创建项目拉下来后项目层级会多一层,为此查了一些资料,亲测如下方式可行. ...
- mssql 收缩日志
--设置简单模式 USE[master] GO ALTER DATABASE mindeemes_spy SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATAB ...
- echarts-中的事件-- demo1.on('事件类型', function (params) {}
ECharts 支持常规的鼠标事件类型,包括 'click'.'dblclick'.'mousedown'.'mousemove'. 'mouseup'.'mouseover'.'mouseout'. ...
- 3. gn入门
Chromium是用gn和ninja进行编译的,即gn把.gn文件转换成.ninja文件,然后ninja根据.ninja文件将源码生成目标程序.gn和ninja的关系就与cmake和make的关系差不 ...
- Springboot jackSon -序列化-详解
在项目中有事需要对值为NULL的对象中Field不做序列化输入配置方式如下: [配置类型]: 源码包中的枚举类: public static enum Include { ALWAYS, NON_NU ...
- java+selenium3学习之一启动firefox浏览器
package ceshi.com.lessons; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; impo ...
- rsync+inotify同步备份
1.rsync与scp区别 scp无法备份大量数据,先统计文件信息,后进行拷贝,如果文件大小超出磁盘空间,则无法拷贝 rsync边复制,边比较,边统计 2.rsync特点 (1.)支持增量备份 (2. ...
- Python前言之编程语言
编程语言分类(语言) 编程语言是用来和计算机进行交互的,计算机只认识0和1. 机器语言(低级语言) 直接和硬件进行交互 用0和1和计算机进行沟通 缺点:开发效率低 优点:执行效率高 汇编语言 直接 ...
- 【oracle】ceil函数 返回值 (大于参数的最小整数)
SELECT CEIL(15.8) FROM DUAL;==========16 SELECT CEIL(-15.8) FROM DUAL;==========-15
- RGB颜色查询
RGB颜色速查表 #FFFFFF #FFFFF0 #FFFFE0 #FFFF00 #FFFAFA #FFFAF0 #FFFACD #FFF8DC #FFF68F ...