CsvHelper:nuget地址

csv导出类||生成类

    public class CSVHeader
{
public string head1 { get; set; }
public string head2 { get; set; }
public string head3 { get; set; }
public string head4 { get; set; }
public string head5 { get; set; }
}

csv map 类

    public class CSVHeaderMap : CsvClassMap<CSVHeader>
{
public CSVHeaderMap()
{
Map(m => m.head1).Name("head1");
Map(m => m.head2).Name("head2");
Map(m => m.head3).Name("head3");
Map(m => m.head4).Name("head4");
Map(m => m.head5).Name("head5");
}
}

csv operate 类

    public class CSVHelper<T> where T : class
{
private static Logger _logger = NLog.LogManager.GetCurrentClassLogger(); public static string GeneralCSV(List<T> dataList, string csvFileName, string localPath)
{
if (dataList == null || dataList.Count == )
{
Console.WriteLine("no report date");
return "";
}
try
{
string localFileName = string.IsNullOrWhiteSpace(csvFileName) ? $"{DateTime.Now.ToString("yyyyMMddhhssmmm")}.csv" : csvFileName; if (!Directory.Exists(localPath))
{
Directory.CreateDirectory(localPath);
}
string csvContent = "";
using (FileStream fs = new FileStream(Path.Combine(localPath, localFileName), FileMode.Create, FileAccess.ReadWrite))
using (StreamWriter strW = new StreamWriter(fs, Encoding.UTF8))
{ csvContent = GenerateCsvContent(dataList); if (csvContent == null) return "";
strW.Write(csvContent);
}
return csvContent;
}
catch (Exception ex)
{
Console.WriteLine("GeneralCSV",
$"csvFileName:{csvFileName}, Path:{localPath}",
ex.Message);
return "";
}
} static string GenerateCsvContent(List<T> itemList, bool hasHeaderRecord = true)
{
try
{
using (StringWriter sWriter = new StringWriter())
{
CsvConfiguration config = new CsvConfiguration();
config.HasHeaderRecord = hasHeaderRecord;
//char soh = '\u0001';
//config.Delimiter = soh.ToString();
using (var csv = new CsvWriter(sWriter, config))
{
csv.WriteRecords(itemList); return sWriter.ToString();
}
}
}
catch (Exception ex)
{
var itemContent = JsonConvert.SerializeObject(itemList);
Console.Write("HDFSApiHelper.GenerateCsvFile"
, $"itemList:{itemContent}"
, ex.Message);
return null;
}
} public static List<T> GetEntityFromCSV<M>(Stream csvMemory,string delimiter=",") where M : CsvClassMap<T>
{
var csvReader = new StreamReader(csvMemory);
var csvConfig = new CsvConfiguration();
csvConfig.HasHeaderRecord = true;
csvConfig.RegisterClassMap<M>();
CsvReader csv = new CsvReader(csvReader, csvConfig);
return csv.GetRecords<T>().ToList();
} public static List<T> GetEntityFromCSV(Stream csvMemory, string delimiter = ",")
{
var csvReader = new StreamReader(csvMemory);
var temp = csvReader.ReadToEnd();
var csvConfig = new CsvConfiguration()
{
HasHeaderRecord = true,
IgnoreHeaderWhiteSpace = true,
IsHeaderCaseSensitive = false,
Delimiter = delimiter
};
var csv = new CsvReader(csvReader);
try
{
return csv.GetRecords<T>().ToList(); }
catch(Exception ex)
{
_logger.Error(ex.ToString());
}
return null;
}
}

csv test method

            List<CSVHeader> test = new List<CSVHeader>();
test.Add(new CSVHeader() { head1="",head2="",head3="",head4="",head5=""});
test.Add(new CSVHeader() { head1 = "", head2 = "", head3 = "", head4 = "", head5 = "" });
test.Add(new CSVHeader() { head1 = "", head2 = "", head3 = "", head4 = "", head5 = "" });
test.Add(new CSVHeader() { head1 = "", head2 = "", head3 = "", head4 = "", head5 = "" });
test.Add(new CSVHeader() { head1 = "", head2 = "", head3 = "", head4 = "", head5 = "" });
string csvDirectory = @"D:\Jimmy Team Project\Doc\2017-11-20日报表汇总\test\";
//生成csv
CSVHelper<CSVHeader>.GeneralCSV(test,"test.csv", csvDirectory); //csv获取list 数据
var mergeExcelPath = csvDirectory+ @"\result.xlsx";
using (FileStream fs = new FileStream(csvDirectory + @"test.csv", FileMode.Open, FileAccess.Read))
{
List<CSVHeader> date = CSVHelper<CSVHeader>.GetEntityFromCSV<CSVHeaderMap>(fs, ",");
}

Nuget CsvHelper 的使用的更多相关文章

  1. 常用库nuget包集合

    ColorConsole htmlagilitypack.1.4.9.5 经测试效率比 CsQueryLaster 高 csvhelper Extend Devlib系列一套 itextsharp l ...

  2. NuGet在2015中的使用

    NuGet Package Restore  https://docs.nuget.org/Consume/Package-Restore 以https://github.com/andburn/hd ...

  3. CsvHelper文档-1前言

    CsvHelper文档-1前言 英文文档链接地址:CsvHelper Document 开源项目地址:CsvHelper 翻译于2018-1-5,原本可能会随时更新: 每一段代码都是经过我实际测试的, ...

  4. nuget 包管理器

    nuget 是.Net平台上的包管理器, 对于包的发布(打包 package)和消费(下载依赖管理)都有很好的支持, 本文仅仅关注消费端, =======================nuget项目 ...

  5. NetCore利用CsvHelper解析支付宝对账单

    支付宝账单是zip压缩文件流,里面包含了两个.csv文件. 1.请求支付宝账单下载链接,获取到zip文件流. var httpClient = _clientFactory.CreateClient( ...

  6. NuGet镜像上线试运行

    为解决国内访问NuGet服务器速度不稳定的问题,我们用阿里云服务器搭建了一个NuGet镜像,目前已上线试运行. 使用NuGet镜像源的方法如下: 1)NuGet镜像源地址:https://nuget. ...

  7. 通过ProGet搭建一个内部的Nuget服务器

    .NET Core项目完全使用Nuget 管理组件之间的依赖关系,Nuget已经成为.NET 生态系统中不可或缺的一个组件,从项目角度,将项目中各种组件的引用统统交给NuGet,添加组件/删除组件/以 ...

  8. .NET Core 系列5 :使用 Nuget打包类库

    NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系, ...

  9. 如何在nuget上传自己的包+搭建自己公司的NuGet服务器(新方法)

    运维相关:http://www.cnblogs.com/dunitian/p/4822808.html#iis 先注册一个nuget账号https://www.nuget.org/ 下载并安装一下Nu ...

随机推荐

  1. 多线程(threading)示例

    一.多线程简单示例 import threading,time print('第一线程(默认):程序开始啦!') def takeANap(): time.sleep(5) print('第二线程:5 ...

  2. numpy.random随机数生成

    seed 确定随机数生成器的种子 permutation 返回一个序列的随机排列或返回一个随机排列的返回 shuffle 对一个序列就地随机乱序 rand 产生均匀分布的样本值 randint 从给定 ...

  3. linux常用命令:more 命令

    more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上. more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会 ...

  4. 转:如何捕获winform程序全局异常?

    前言 上篇文章我提供了一种方案可以供我们捕获单线程程序中的所有未处理异常.但是如果程序是多线程,那么新增线程出现了异常上个方案就无能为力了.本着方案总比问题多的态度,我再给大家提供一种新的方案,供大家 ...

  5. 大数据学习路线分享-Hbase shell的基本操作完整流程

    HBase的命令行工具,最简单的接口,适合HBase管理使用,可以使用shell命令来查询HBase中数据的详细情况.安装完HBase之后,启动hadoop集群(利用hdfs存储),启动zookeep ...

  6. java初学者必看的学习路线

    不管在编程语言的排行榜中,还是在大多数企业应用的广泛程度来看,Java一直都是当之无愧的榜首.Java语言有着独特的魅力吸引着广大的年轻人去学习,每个人学习的方式方法不一样. 第一步:首先要做好学习前 ...

  7. windows与linux ping 显示的ip不一样

    DNS修改了一下域名对应的IP后,域名不能访问了,我在windows下ping一下域名,IP没有变过来,还是老的IP.我在linux下又ping了一下域名,是换过了的.这个问题是由windows下的本 ...

  8. JOBDU 题目1131:合唱队形

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4546 解决:1445 题目描述: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形. ...

  9. 使用My97DatePicker设置日期的属性示例

    <td>交易日期:</td> <td colspan="3"> <input class="Wdate" id=&qu ...

  10. HTTP小幺鸡接口管理工具安装与配置说明

    http://www.xiaoyaoji.cn/doc/TxybXPTdx 小幺鸡接口管理工具安装说明 使用可以参考:https://blog.csdn.net/qincidong/article/d ...