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 == 0)
            {
                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="1",head2="2",head3="3",head4="4",head5="5"});
            test.Add(new CSVHeader() { head1 = "1", head2 = "2", head3 = "3", head4 = "4", head5 = "5" });
            test.Add(new CSVHeader() { head1 = "1", head2 = "2", head3 = "3", head4 = "4", head5 = "5" });
            test.Add(new CSVHeader() { head1 = "1", head2 = "2", head3 = "3", head4 = "4", head5 = "5" });
            test.Add(new CSVHeader() { head1 = "1", head2 = "2", head3 = "3", head4 = "4", head5 = "5" });
            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, ",");
            }        

时间: 2024-10-16 04:07:46

Nuget CsvHelper 的使用的相关文章

常用nuget包集合

ColorConsole htmlagilitypack.1.4.9.5 经测试效率比 CsQueryLaster 高 csvhelper Extend Devlib系列一套 itextsharp litedb log4net microsoft.bcl一套,.net4 await 用 MySql.Data.6.9.9 newtonsoft.json.9.0.1 Oracle.ManagedDataAccess.12.1.24160419 sharpcompress.0.12.4 system.

【AspNet Core】Nuget代理网站

因为访问Nuget太慢,在Dotnet Core RC2发布前,我就基于Asp.Net做了一个Nuget代理网站 这是网站地址:http://nuget.lzzy.net/ Nuget源:http://nuget.lzzy.net/api/v2 广西电信百兆带宽. 这个网站将会缓存所有访问过的API页面与包. API页面缓存的原理,第一次访问会等待服务器从Nuget上下载页面信息 下载后会替换里面的网址并保存到数据库. 第二次访问会从数据库里取出页面兵判断过期时间 如果已过期,先返回页面信息,后

使用Nuget 安装指定版本package或者更新package到指定版本

最近在琢磨MVC和EntityFramework,使用的VS是2013版的,在Nuget的GUI界面下安装了EntityFramework(默认安装最新版的,怎么安装指定版本还没找到),按照MVC的示例项目MusicStore逐步做的过程中发现MVC4不支持EntityFramwok 6. 尝试去更新MVC版本各种失败,只能试着去降低EntityFramework版本.但是通过Nuget的GUI界面无法安装或更新到指定版本的EntityFramwok.在网上搜了搜相关资料(事实上也很容易搜到),

项目 XXX 的 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx”

项目 XXX 的 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx” 编译新下载的代码出错 修改包管理器的源为 http://www.nuget.org/api/v2/ .重试后成功 记得打勾

手把手教你搭建nuget服务器

新建web项目 工具:VS2013 版本:.Net Framework 4.6,低版本也行,不过要找到对应版本的Nuget.Server 装了NuGet客户端(百度如何安装) WebForm或MVC都行 此web项目将作为自己的NuGet服务器程序 我建的是MVC项目 安装NugetServer 工具栏—工具—NuGet包管理器—程序包管理器控制台 访问:https://www.nuget.org/packages/NuGet.Server/ 找到适合自己的版本,我这里选择的是最新的版本 执行命

NuGet 简单使用

NuGet 可以优雅的集成网络上各种开放源码的程序包,安装和卸载都非常方便 一.从NuGet 中引入程序包 1.新建一个默认的 mvc 项目,显示如下: 2.对着解决方案右键,选择 "管理解决方案的NuGet程序包",点击浏览标签页,搜索"npoi",结果如下所示,点击安装 3.很快就可以安装完成,输出如下: 4.打开"HomeController"文件,在Index action 输入NPOI ,就可以看到只能提示了,说明NPOI的dll 已经

玩转Nuget服务器搭建(一)

背景                                                                                      公司项目是分模块进行架构的,因此各个项目之间的相互依赖不仅混乱而且还很复杂,还有一个让人更感到不适的是编译一次整个解决方案,就会让你有种生无可恋的赶脚:为了解决掉这些问题,我决定搭建一个nuget服务器,减少底层类库编译的时间. 实践                                            

NuGet文件下载与应用

nuget是一款.net下强大的包管理开发工具,Visual Studio 2013和Visual Studio 2015都缺省支持Nuget.在线开发能享受到Nuget的便利,但是如果是离线开发,还能友好的使用Nuget吗?答案是肯定的!下面我来介绍一下离线环境中如何使用Nuget. 首先,打开Nuget的官方网站 http://www.nuget.org,利用其页面顶部的搜索栏,检索查找需要的Nuget包,以Prism.Unity 6为例,如下图 然后,点击左侧的"Download“,下载P

NuGet使用方法(一) - 使用GUI制作NuGet包

NuGet包制作工具下载地址 1.GUI工具下载地址 http://pan.baidu.com/s/1c1b2l6C 密码:wj4g 2.命令行工具下载地址 http://pan.baidu.com/s/1kUa7JAR 密码:3ott ?一.GUI制作方法 在VS中创建个项目,编译后进入bin目录 打开NuGet Package Explorer 点击Create a new package(Ctrl+N),并拖拽dll与xml文件至Package content区域.修改package版本号