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 ...
随机推荐
- FTL 数字有逗号
Long i=100000000l; Map model=new Map(); model.put("t",i); 在freemarker中显示为100,000,000 想按原样输 ...
- 这份书单,给那些想学Hadoop大数据、人工智能的人
一.简单科普类 (文末附下载链接) 1.<人工智能:李开复谈AI如何重塑个人.商业与社会的未来图谱2> 作者:李开复,王咏刚 推荐理由:文章写得一般,但李开复和王永刚老师总结的还可以,算国 ...
- selenium-java web自动化测试工具抓取百度搜索结果实例
selenium-java web自动化测试工具抓取百度搜索结果实例 这种方式抓百度的搜索关键字结果非常容易抓长尾关键词,根据热门关键词去抓更多内容可以用抓google,百度的这种内容容易给屏蔽,用这 ...
- [trick] 玩弄svn的目录结构
今天在使用svn进行版本管理时出现了一个小问题: 原本在s目录下有一个c目录,不知为何被删除了,而svn st命令并没有认为它消失,svn up命令也无法下载回来: 从另一个地方拷贝过来一个c,svn ...
- goldengate 12.3 实现mysql数据及DDL实时同步
以下环境在mysql 5.7上完成. set mysql_home=mysql安装路径 set path=%mysql_home%\bin;%path% 首先要准备mysql的启动,可参考:http: ...
- Logstash 安装和使用
下载地址 https://artifacts.elastic.co/downloads/logstash/logstash-5.6.8.zip 下载后解压,测试 #将键盘内容输出到控制台 logsta ...
- 计算概论(A)/基础编程练习2(8题)/5:点和正方形的关系
#include<stdio.h> #include<math.h> int main() { // 输入坐标 float x, y; while(scanf("%f ...
- 【javascript】对原型对象、原型链的理解
原型对象,原型链这些知识属于基础类知识.但是平时开发过程中也很少用到. 看网上的意思,原型链用于es5开发场景下的继承.es6有了类语法糖之后,就自带继承了. 通过理解,个人画了一张原型链解构的关系图 ...
- Solr在Linux中的安装
在Linux下进行安装: 我已经将压缩包放在了虚拟机下面了,然后开始进行解压缩. tar -zxvf solr-4.10.3.tar 解压完会多一个文件夹.在bin目录下会有这样的一个目录, 其中的这 ...
- curl 异步捉取数据类
<?php class RequestLib { /** * GET 请求 * @param string $url */ public static function http_get($ur ...