CsvHelper
写66666行两个数字 用CsvHelper里的ExcelSerializer 400ms SaveAs 200ms 共600ms 直接用StreamWriter 150ms
行数可以超过65536
worksheet reader
class Program
{
static void Main(string[] args)
{
XLWorkbook workbook = new XLWorkbook("E://233.xlsx",XLEventTracking.Disabled);
var sheet = workbook.Worksheets.First(p => p.Name == "ABC");
var csv = new CsvReader(new ExcelParser(sheet));
csv.Configuration.RegisterClassMap<MapA>();
var records=csv.GetRecords<A>();
foreach(var re in records)
{
Console.WriteLine(re.ToString());
}
foreach (var header in csv.FieldHeaders)
{
Console.WriteLine(header);
}
}
public class MapA:CsvClassMap<A>
{
public MapA()
{
Map(m=>m.a).Name("AAA");
Map(m=>m.b).Name("BBB");
}
}
public static List<A> list = new List<A> { new A(1, 2), new A(3, 4) };
public class A
{
public int a
{
get; set;
}
public int b
{
get; set;
}
public A() { }
public A(int a,int b)
{
this.a = a;
this.b = b;
}
public override string ToString()
{
return a + " " + b;
}
}
}
worksheet writer
class Program
{
static void Main(string[] args)
{
XLWorkbook workbook = new XLWorkbook(XLEventTracking.Disabled);
var sheet = workbook.AddWorksheet("ABC");
var csv = new CsvWriter(new ExcelSerializer(sheet));
csv.Configuration.RegisterClassMap<MapA>();
csv.WriteHeader<A>();
csv.WriteRecords(list);
workbook.SaveAs("E://233.xlsx");
}
public class MapA:CsvClassMap<A>
{
public MapA()
{
Map(m=>m.a).Name("AAA");
Map(m=>m.b).Name("BBB");
}
}
public static List<A> list = new List<A> { new A(1, 2), new A(3, 4) };
public class A
{
public int a
{
get; set;
}
public int b
{
get; set;
}
public A() { }
public A(int a,int b)
{
this.a = a;
this.b = b;
}
}
}
Writer
class Program
{
static void Main(string[] args)
{
FileStream file = new FileStream("E://123.csv", FileMode.Open);
StreamWriter writer = new StreamWriter(file, Encoding.UTF8);
var csv = new CsvWriter(writer);
csv.Configuration.RegisterClassMap<MyClassMap>();
csv.WriteHeader<A>();
csv.WriteRecords(list);
writer.Flush();
writer.Close();
}
public class MyClassMap : CsvClassMap<A>
{
public MyClassMap()
{
Map(m => m.a).Name("AAA");
Map(m => m.b).Name("BBB");
Map(m => m.c);
}
}
public static List<A> list = new List<A>() { new A(1, 2, 3), new A(4, 5, 6) };
public class A
{
public A() { }
public int a
{
get; set;
}
public int b
{
get; set;
}
public int c
{
get; set;
}
public A(int a,int b,int c)
{
this.a = a;
this.b = b;
this.c = c;
}
public override string ToString()
{
return a + " " + b + " " + c;
}
}
}
Reader
class Program
{
static void Main(string[] args)
{
FileStream file = new FileStream("E://123.csv", FileMode.Open);
StreamReader reader = new StreamReader(file, Encoding.UTF8);
var csv = new CsvReader(reader);
csv.Configuration.RegisterClassMap<MyClassMap>();
var records=csv.GetRecords<A>();
foreach(var re in records)
{
//GetRecords在foreach里会自动调用Read(),GetRecord要手动调用Read()
Console.WriteLine(re.ToString());
Console.WriteLine(csv.GetField("BBB"));
Console.WriteLine(csv.GetField(1));
}
var headers = csv.FieldHeaders;//调用过Read()才能获取header
reader.Close();
file.Close();
}
public class MyClassMap : CsvClassMap<A>
{
public MyClassMap()
{
Map(m => m.a).Name("AAA");
Map(m => m.b).Name("BBB");
Map(m => m.c);
}
}
public static List<A> list = new List<A>() { new A(1, 2, 3), new A(4, 5, 6) };
public class A
{
public A() { }
public int a
{
get; set;
}
public int b
{
get; set;
}
public int c
{
get; set;
}
public A(int a,int b,int c)
{
this.a = a;
this.b = b;
this.c = c;
}
public override string ToString()
{
return a + " " + b + " " + c;
}
}
}
CsvHelper的更多相关文章
- CsvHelper支持List<T>
/// <summary> /// Csv帮助类 /// </summary> public class CsvHelper { /// <summary> / ...
- C# 使用CsvHelper读取.csv文件
1,先到包管理器下载 安装CsvHelper. 2,创建一个与csv文件字段名称相同的类 public class SurveyInfoModel { public string DIST_CD { ...
- Nuget CsvHelper 的使用
CsvHelper:nuget地址 csv导出类||生成类 public class CSVHeader { public string head1 { get; set; } public stri ...
- CsvHelper文档-6类型转换
CsvHelper文档-6类型转换 CsvHelper使用类型转换器来转换string到对象,或者对象到string: ITypeConverter 类型转换器的结构,必须实现: public int ...
- CsvHelper文档-5配置
CsvHelper文档-5配置 CsvHelper库被设计成快速且简单易用,但是有时候默认的是设置不符合要求,需要你自己改变一些东西.所以csvHelper内置了很多自定义设置选项来改变读写行为.特别 ...
- CsvHelper文档-4映射
CsvHelper文档-4映射 类映射 有时候你的类成员和csv的header不一定对应,有时候你的csv文件根本就没有header行,你需要特别制定一个成员的index,你不能依靠.net中默认的顺 ...
- CsvHelper文档-3写
CsvHelper文档-3写 不用做任何设置,默认的情况下,csvhelper就可以很好的工作了.如果你的类的属性名称和csv的header名称匹配,那么可以按照下面的例子写入: var record ...
- 封装一个CSVHelper
public class CSVHelper { /// <summary> /// CSV转换成DataTable(OleDb数据库访问方式) /// </summary> ...
- CsvHelper文档-2读
CsvHelper文档-2读 这个库默认不需要做任何设置就可以很容易的使用它.如果你的类属性名称直接匹配csv的标题名称,那么可以按照下面的实例来用: (以下所有的代码都需要引用using csvhe ...
随机推荐
- Android -- 服务组件的使用(1)
1. 效果图
- MathType的公式在word中跟文字不对齐
引用http://blog.sina.com.cn/s/blog_4d1f40c00100net8.html 部分Mathtype公式与文档文字没有很好的对齐,而是浮起来了,也就是说Mathtype公 ...
- CentOS上安装RabbitMQ3.6.X
RabbitMQ3.6.1的安装方法跟以前的版本有点不一样,我在网上找了很多资料,基本都是3.1左右的版本,而且安装过程很繁琐,所以我花了一下午 的时间研究如何实现最简安装.为了让大家少走弯路,就把安 ...
- php在window下的环境配置(VC9)
配置PHP5: 1. 配置PHP5.3.3,打开php安装目录(笔者是D:\php\php5)可以看到目录下有两个这样的文件php.ini- development和php.ini-produ ...
- js事件冒泡和事件捕获的区别
- 【HDU4419 Colourful Rectangle】 线段树面积并
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4419 题目大意:给你n个矩形,每个矩形都有一种颜色,矩形覆盖会出现另外一种颜色,问你所有矩形中不同的颜 ...
- div自定义的滚动条 (竖直导航条)
<style type="text/css"> .scrollBar { width: 10px; background-color: #daa520; positio ...
- javascript 百度地图
官方地址 http://lbsyun.baidu.com/index.php?title=jspopular 示例地址 http://developer.baidu.com/map/jsdemo.ht ...
- 数据库---MySQL常用函数总结
一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于 ...
- IOS第二天多线程-02一次性代码
********** #import "HMViewController.h" #import "HMImageDownloader.h" @interface ...