Nuget CsvHelper 的使用
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 的使用的更多相关文章
- 常用库nuget包集合
ColorConsole htmlagilitypack.1.4.9.5 经测试效率比 CsQueryLaster 高 csvhelper Extend Devlib系列一套 itextsharp l ...
- NuGet在2015中的使用
NuGet Package Restore https://docs.nuget.org/Consume/Package-Restore 以https://github.com/andburn/hd ...
- CsvHelper文档-1前言
CsvHelper文档-1前言 英文文档链接地址:CsvHelper Document 开源项目地址:CsvHelper 翻译于2018-1-5,原本可能会随时更新: 每一段代码都是经过我实际测试的, ...
- nuget 包管理器
nuget 是.Net平台上的包管理器, 对于包的发布(打包 package)和消费(下载依赖管理)都有很好的支持, 本文仅仅关注消费端, =======================nuget项目 ...
- NetCore利用CsvHelper解析支付宝对账单
支付宝账单是zip压缩文件流,里面包含了两个.csv文件. 1.请求支付宝账单下载链接,获取到zip文件流. var httpClient = _clientFactory.CreateClient( ...
- NuGet镜像上线试运行
为解决国内访问NuGet服务器速度不稳定的问题,我们用阿里云服务器搭建了一个NuGet镜像,目前已上线试运行. 使用NuGet镜像源的方法如下: 1)NuGet镜像源地址:https://nuget. ...
- 通过ProGet搭建一个内部的Nuget服务器
.NET Core项目完全使用Nuget 管理组件之间的依赖关系,Nuget已经成为.NET 生态系统中不可或缺的一个组件,从项目角度,将项目中各种组件的引用统统交给NuGet,添加组件/删除组件/以 ...
- .NET Core 系列5 :使用 Nuget打包类库
NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系, ...
- 如何在nuget上传自己的包+搭建自己公司的NuGet服务器(新方法)
运维相关:http://www.cnblogs.com/dunitian/p/4822808.html#iis 先注册一个nuget账号https://www.nuget.org/ 下载并安装一下Nu ...
随机推荐
- string 常量池 栈 堆
- yum配置文件中baseurl和mirrorlist的区别
找到yum.repo.d文件夹下的文件,随便打开一个,找到mirrorlist的url,比如: http://mirrorlist.centos.org/?release=6&arch=$ba ...
- Python数据类型深入学习之数字
一. 数字常量 1. 下面来看看Python的数字常量中都要哪些类型: 数字 常量 129,-89,0 一般整数 9999848499999L,4594646469l 长整型数(无限大小) 1.232 ...
- JetBrains WebStorm打开多个项目project的方法
JetBrains WebStorm打开多个项目project的方法File-->Settings-->Directories点击右侧 + Add content root,选择目录后即可 ...
- socket.io不为人知的功能
socket.io 是一个基于websocket实现的前后端实时通讯框架,也对低版本浏览器做了封装.使用起来简单,方便. 初次使用起来可能会比较迷糊,其实主要常用就几个方法,简单介绍一下. //客户端 ...
- 分享30道Redis面试题,面试官能问到的我都找到了
1.什么是Redis?简述它的优缺点? Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到 ...
- runltp<p-pan
- 关于nginx配置虚拟主机
前提:我的虚拟主机的外网ip为111.231.226.228(是云服务器哈) 本地测试环境为windows7(修改本地的hosts文件) 步骤:(安装nginx可以看看我文章“linux ng ...
- NATS—协议详解(nats-protocol)
NATS的协议是一个简单的.基于文本的发布/订阅风格的协议.客户端连接到 gnatsd(NATS服务器),并与 gnatsd 进行通信,通信基于普通的 TCP/IP 套接字,并定义了很小的操作集,换行 ...
- 批量telnet端口通不通
每读一行就运行一次telnet IP port #!/bin/bash port="22" cat *.txt | while read line do telnet ${line ...