在我们项目开发中,导出CSV数据功能是非常常见的。
今天推荐一个高性能、低内存的CSV导出开源库。
01 项目简介
CsvExport是一个基于C#非常简单和快速的CSV导出开源库。
该开源库的核心特点:
-
导出功能兼容性高(自动检测分隔符,友好裁剪行列和值以提高兼容性)
-
导出的内容会自动转义逗号、引号和多行文本
-
导出的内容以时区安全格式导出日期
-
极其易于使用
-
.NET Standard 2.0库(兼容.NET Core和.NET Framework)
-
比CsvHelper快30倍
-
内存使用量仅为CsvHelper的四分之一
02 使用方法
1、安装依赖库
Install-Package CsvExport
2、基本导出
using Csv;
var myExport = new CsvExport();
// 添加第一行数据
myExport.AddRow();
myExport["Region"] = "Los Angeles, USA";
myExport["Sales"] = 100000;
myExport["Date Opened"] = new DateTime(2003, 12, 31);
// 添加第二行数据
myExport.AddRow();
myExport["Region"] = "Canberra \"in\" Australia"; // 注意转义双引号
myExport["Sales"] = 50000;
myExport["Date Opened"] = new DateTime(2005, 1, 1, 9, 30, 0);
//导出文件
myExport.ExportToFile("myExport.csv");
效果:
3、使用List对象
using Csv;
var list = new List<Foo>
{
new Foo { Region = "Los Angeles", Sales = 123321, DateOpened = DateTime.Now },
new Foo { Region = "Canberra in Australia", Sales = 123321, DateOpened = DateTime.Now },
};
var myExport = new CsvExport();
myExport.AddRows(list);
string csv = myExport.Export();
//导出文件
myExport.ExportToFile("myExport.csv");
public class Foo
{
public string Region { get; set; }
public int Sales { get; set; }
public DateTime DateOpened { get; set; }
}
3、配置是否包含表头和列名
var myExport = new CsvExport(
columnSeparator: ",",
includeColumnSeparatorDefinitionPreamble: false,
includeHeaderRow: false
);
效果:
4、Asp.Net 导出CSV文件
var myExport = new CsvExport();
myExport.AddRow();
myExport["Region"] = "Los Angeles, USA";
myExport["Sales"] = 100000;
myExport["Date Opened"] = new DateTime(2003, 12, 31);
myExport.AddRow();
myExport["Region"] = "Canberra \"in\" Australia";
myExport["Sales"] = 50000;
myExport["Date Opened"] = new DateTime(2005, 1, 1, 9, 30, 0);
///ASP.NET MVC 示例
return File(myExport.ExportAsMemoryStream(), "text/csv", "results.csv");
03 项目地址
https://github.com/jitbit/CsvExport
- End -
推荐阅读
一个基于.Net的SVG图形开源操作库
mRemoteNG:一个基于.Net开发的支持多协议远程连接管理工具
MudBlazor:一个UI简洁美观漂亮的Blazor开源组件!
.NET日志库:Serilog、NLog、Log4Net等十大开源日志库大盘点!
Jot:方便.Net开发者状态和应用数据持久化的开源库