用FileHelplers导出csv数据:

[DelimitedRecord(",")]
[IgnoreEmptyLines()]
[ConditionalRecord(RecordCondition.ExcludeIfMatchRegex, "^,+$")]
public class FormItemExport
{
[FieldQuoted(‘"’, QuoteMode.OptionalForBoth)]
[FieldNullValue(typeof(string), "")]
public string Id; [FieldQuoted(‘"’, QuoteMode.OptionalForBoth)]
[FieldNullValue(typeof(string), "")]
public string FirstName; [FieldQuoted(‘"’, QuoteMode.OptionalForBoth)]
[FieldNullValue(typeof(string), "")]
public string LastName; [FieldQuoted(‘"’, QuoteMode.OptionalForBoth)]
[FieldNullValue(typeof(string), "")]
public string Email; [FieldQuoted(‘"’, QuoteMode.OptionalForBoth)]
[FieldNullValue(typeof(string), "")]
public string RewardsCardHolder; [FieldQuoted(‘"’, QuoteMode.OptionalForBoth)]
[FieldNullValue(typeof(string), "")]
public string CreateDatetime; } public class Utils
{
public delegate V ExportFill<T, V>(T inptOj); public static FormItemExport FillForm(WscLandingFormEntity le)
{
FormItemExport lre = new FormItemExport(); lre.Id = le.Id.ToString();
lre.FirstName = le.FirstName;
lre.LastName = le.LastName;
lre.Email = le.Email; if (le.RewardsCardHolder)
{
lre.RewardsCardHolder = "Yes";
}
else
{
lre.RewardsCardHolder = "No";
} lre.CreateDatetime = le.CreateDatetime.ToString("MM/dd/yyyy hh:mm:ss"); return lre;
} public static void Export<T, V>(EntityCollectionBase<T> ec, ExportFill<T, V> expF, string filename, string[] fieldsHeaders) where T : EntityBase
{
string delimiter = ",";
string qualifier = """; List<V> recordCollection = new List<V>();
foreach (T obj in ec)
{
recordCollection.Add(expF(obj));
} MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(ms);
ms.Position = 0; FileHelperEngine engine = new FileHelperEngine(typeof(V));
V[] erc = recordCollection.ToArray(); StringBuilder strOut = new StringBuilder(); for (int i = 0; i < fieldsHeaders.Length; i++)
{
strOut.Append(qualifier);
strOut.Append(fieldsHeaders[i]);
strOut.Append(qualifier);
if (i < fieldsHeaders.Length – 1)
strOut.Append(delimiter);
} engine.HeaderText = strOut.ToString();
engine.WriteStream(sw, erc); HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.AddHeader("content-disposition", "attachment; filename=" + filename);
response.ContentType = "application/vnd.ms-excel"; sw.Flush();
ms.Flush();
ms.WriteTo(response.OutputStream); ms.Close();
response.Flush();
response.End();
}
}

导出时:

Utils.Export < MclCommercialContactEntity, CommercialContactExport>
(list,new Utils.ExportFill<MclCommercialContactEntity,CommercialContactExport>(CommercialContactExport.ExportCommercialContacts), "Commercial Contacts.csv",
new string[] { "Organization", "First Name", "Last Name", "Address", "City", "Province", "Country", "Postal Code", "Phone Number", "Alternate Phone", "Email" });

FileHelpers 用法 z的更多相关文章

  1. 文件读取方法(FileHelpers) z

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using FileHelp ...

  2. XtraGrid的若干种用法 z

    支持多种类型的数据集合作为数据源 XtraGrid与传统的DataGridView一样,支持多种类型作为其数据源.下面例子是将DataTable, List<T>和数组分别绑定到XtraG ...

  3. DevExpress控件XtraGrid的Master-Detail用法 z

    XtraGrid支持Master-Detail展示,在自带的Demo中展示了一个“公司——产品——订单”的例子.自己照着实现了一下,有几处关键地方补充一下. 示例: 部门信息(主1)——部门下用户(从 ...

  4. sql with as 用法-Z

    以下内容转自:http:.com/ 一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个 ...

  5. DEV控件之ChartControl用法 z

    一.总体概述 这个控件包含3层,最外面的chartControl层.中间的XYDiagram层.最里面的Series层.功能非常强大,但同时使用起来也相对复杂,需要各个层之间相互协调设置才能达到自己想 ...

  6. C#并行库(TaskParallelLibrary)用法 z

    1. Task.Factory.StartNew(() => DoSomeWork());是异步的 下面的代码会先输出ddd,因为Task.Factory.Startnew不阻塞: var ta ...

  7. Matlab数字信号处理

    产生方波 clear t=0:0.01:10; subplot(4,1,1) f1=square(t);                       %  产生周期为2pi的方波信号 plot(t,f ...

  8. Python的Numpy库简述

    numpy 是 python 的科学计算库import numpy as np 1.使用numpy读取txt文件 # dtype = "str":指定数据格式 # delimite ...

  9. linux备忘录-shell脚本

    知识 shell执行方式 shell执行方式有 通过source或. 在现在的bash环境中执行脚本 变量等会保持 通过bash shell.sh或sh shell.sh 使用一个新的bash环境执行 ...

随机推荐

  1. CH2401 送礼物 双向搜索

    双向搜索:把前一半的可行状态搜出来,然后sort+unique,之后搜后一半时,结束时二分一下前一半的答案,拼出一个与W尽量接近的ans来更新 ps:距LYD说前一半取n/2+2时跑的最快...不知, ...

  2. no git binary found in $path(已解决,但是还有疑问)

    跟同行研究个项目代码,他把代码打包发我后,我解压到本地,路径和我本地个人项目路径基本相同, 但是当执行npm install时,就报了 no git binary found in $path ,这个 ...

  3. HDU - 2087 求不可重复字符串的匹配次数

    只要KMP里对f[i]进行限制即可 /*H E A D*/ int nxt[maxn],f[maxn],ans; char T[maxn],P[maxn]; void buildNext(){ int ...

  4. http请求报文和响应报文(2)

    接上篇: 3.回应报文 理解回应报文,首先要弄清回应报文中的状态码. 相比于请求报文,对于响应报文,个人觉得还蛮有趣的. 主要由三部分组成:协议版本.状态码.状态码描述 3.1状态码 **常见的状态码 ...

  5. 转帖 css的块元素、内联元素、内联块元素、display属性、浮动、定位

    块元素 块元素,也可以称为行元素,布局中常用的标签如:div.p.ul.li.h1~h6.dl.dt.dd等等都是块元素,它在布局中的行为:1.支持全部的样式.2.如果没有设置宽度,默认的宽度为父级宽 ...

  6. Oracle DG --检查

    检查DG是否同步 01,  查看主备可切换状态 select switchover_status from v$database;select db_unique_name,open_mode,dat ...

  7. TimesTen客户端DSN配置

    打开控制面板\管理工具 1.打开数据源(ODBC) 2.选择系统DSN 3.选择添加: 4.单击完成 5.Servers

  8. TOJ 3031 Multiple

    Description a program that, given a natural number N between 0 and 4999 (inclusively), and M distinc ...

  9. 【Linux】修改ubuntu默认字符集

    今天把以前的项目移植到linux上了,我装的是ubuntu,web服务器是tomcat,发现用freemark模板生成的静态页面全 乱码了,在windows都是正常的,猜想可能是linux字符集的问题 ...

  10. elasticSearch2.4与grafana,stagemonitor集成做监控需要执行的mapping

    PUT /_template/stagemonitor-metrics-{ "template": "stagemonitor-metrics-*", &quo ...