CsvExport:一个.Net高性能、低内存的CSV导出开源库

在我们项目开发中,导出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开发者状态和应用数据持久化的开源库

相关推荐
缺点内向1 小时前
C# 中 Excel 工作表打印前页面边距的设置方法
c#·.net·excel
喵叔哟2 小时前
6. 从0到上线:.NET 8 + ML.NET LTR 智能类目匹配实战--渐进式学习闭环:从反馈到再训练
学习·机器学习·.net
雪芽蓝域zzs9 小时前
uniapp AES 加密解密
开发语言·uni-app·c#
weixin_4569042714 小时前
C# 中的回调函数
java·前端·c#
千忧散16 小时前
Unity Socket学习笔记 (三)TCP&UDP
笔记·学习·unity·c#
喵叔哟19 小时前
4. 从0到上线:.NET 8 + ML.NET LTR 智能类目匹配实战--从业务到方案:数据与特征工程:从 CSV 到可训练的 LTR 样本
.net
君莫愁。19 小时前
【Unity】构建超实用的有限状态机管理类
unity·c#·游戏引擎·有限状态机
@LetsTGBot搜索引擎机器人1 天前
用 Python 打造一个 Telegram 二手交易商城机器人
开发语言·python·搜索引擎·机器人·.net·facebook·twitter
她说彩礼65万1 天前
Asp.net core appsettings.json` 和 `appsettings.Development.json`文件区别
后端·json·asp.net
WangMing_X1 天前
《使用模块化分层来达到企业级项目要求》
开发语言·c#