CsvHelper支持List<T>
/// <summary>
/// Csv帮助类
/// </summary>
public class CsvHelper
{
/// <summary>
/// List<T>转换为Csv所支持的字符串
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="list">列表</param>
/// <returns>转换后的字符串</returns>
public static string ToCsvString<T>(IEnumerable<T> list) where T : class
{
var type = typeof(T);
var props = type.GetProperties();
StringBuilder sb = new StringBuilder(); for (int i = ; i < props.Length; i++)
{
var prop = props[i];
if (i > )
{
sb.Append(",");
} sb.Append(prop.Name);
} sb.AppendLine();
if (list != null)
{
foreach (var obj in list)
{
for (int i = ; i < props.Length; i++)
{
var prop = props[i];
var propValue = prop.GetValue(obj, null);
if (i > )
{
sb.Append(",");
} if (propValue == null)
sb.Append(string.Empty);
else
sb.Append(FomartCsvData(propValue.ToString()));
} sb.AppendLine();
}
} return sb.ToString();
} /// <summary>
/// 字符串转义
/// </summary>
/// <param name="str">原字符串></param>
/// <returns>转义后字符串</returns>
private static string FomartCsvData(string str)
{
if (string.IsNullOrEmpty(str))
return str; ////当表格内容有"双引号时,转换为两个""双引号,外面用双引号括起来
if (str.Contains("\""))
{
str = str.Replace("\"", "\"\"");
} ////当表格内容有,半角逗号、换行、空格、tab 等特殊字符时,外面使用双引号括起来。
if (str.Contains(",") || str.Contains("\"") || str.Contains("\n") || str.Contains("\r") || str.Contains("\t") || str.Contains(" "))
{
str = string.Format("{0}{1}{0}", "\"", str);
} return str ;
} }
逗号,双引号转义参考下面链接
http://blog.csdn.net/zzx3q/article/details/7456710
http://www.cnblogs.com/batsing/p/csv1.html
CsvHelper支持List<T>的更多相关文章
- CsvHelper文档-1前言
CsvHelper文档-1前言 英文文档链接地址:CsvHelper Document 开源项目地址:CsvHelper 翻译于2018-1-5,原本可能会随时更新: 每一段代码都是经过我实际测试的, ...
- 支持 .NET Core 的 Memcached 客户端 EnyimMemcachedCore
1. 介绍 EnyimMemcachedCore 是一个支持 .NET Core 的 Memcached 客户端,是从 EnyimMemcached 迁移至 .NET Core的,源代码托管在 Git ...
- ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...
- Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持
Jexus 是一款运行于 Linux 平台,以支持 ASP.NET.PHP 为特色的集高安全性和高性能为一体的 WEB 服务器和反向代理服务器.最新版 5.8.2 已经发布,有如下更新: 1,现在大 ...
- 7.让网站支持http和https的访问方式
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#iis 怎么让网站在本地支持SSL?http://www.c ...
- 逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])
常用技能:http://www.cnblogs.com/dunitian/p/4822808.html#skill 逆天博客:http://dnt.dkil.net 逆天通用水印扩展篇~新增剪贴板系列 ...
- x:bind不支持样式文件 或 此Xaml文件必须又代码隐藏类才能使用{x:Bind} 解决办法
这两天学习UWP开发,发现一个很有趣的问题,就是我题目中的描述的. 我习惯了在ResourceDictionary中写样式文件,但是发现用x:Bind时会有问题 如果是写在Style里,则提示 “x: ...
- .NET Core采用的全新配置系统[9]: 为什么针对XML的支持不够好?如何改进?
物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurationSource.XmlConfigura ...
- nodejs项目mysql使用sequelize支持存储emoji
nodejs项目mysql使用sequelize支持存储emoji 本篇主要记录nodejs项目阿里云mysql如何支持存储emoji表情. 因由 最近项目遇到用户在文本输入emoji进行存储的时候导 ...
随机推荐
- Android Weekly Notes Issue #226
Android Weekly Issue #226 October 9th, 2016 Android Weekly Issue #226 本期内容包括: 用Firebase做A/B Test; 用R ...
- 关于addSubView需要注意的事项 -今天吃了一个大亏
addSubview: Adds a view to the end of the receiver’s list of subviews. 译:增加一个视图到接收者的子视图列表中. - (void) ...
- Intellij idea 和android studio 代码给混淆
Intellij idea 和android studio 代码给混淆 一.指令说明-optimizationpasses 5 # 指定代码的压缩级别 -dontusemixedcaseclassna ...
- IOS 杂笔-12(类别de巧用 有便于Frame的操作)
在实际开发中很多时候我们都为了控件frame的操作焦头烂额. 例如:我们只想要获取view的width. 我们可以这么操作:view.frame.size.width 有时我们想要改变view的wid ...
- [转]Web APi之认证(Authentication)及授权(Authorization)【一】(十二)
本文转自:http://www.cnblogs.com/CreateMyself/p/4856133.html 前言 无论是ASP.NET MVC还是Web API框架,在从请求到响应这一过程中对于请 ...
- linux的学习记录随笔
为什么学习linux 因为操作系统是一种介质,你要接触其中的东西,首先必须要有介质,而linux在服务器端是老大哥的地位,所以呢,学习linux吧. 学习的方式 可以看视频 imooc.百度传课.网易 ...
- c# 三种常见的委托
参考 <编写高质量代码:改善C#程序的157个建议> , 尽量使用FCL中的委托声明. FCL: FrameWork Class Library 三种常用:Action.Func.Pre ...
- python 高级之面向对象初级
python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 面向对象:对函数进行分类和封装,让开 ...
- $x^2+y^2=c^2$
$x^2+y^2=c^2$ 每一个实数都能用有理数去逼近到任意精确的程度,这就是有理数的稠密性.The rational points are dense on the number axis. 每一 ...
- git 修改最后一次提交的用户名 或者 commit的内容
修改git最后一次提交的命令 $ git commit --amend 修改git最后一次提交用户名的相关命令 git config user.name 'wangz' git config user ...