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

server/2024/9/23 6:24:08/

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


http://www.ppmy.cn/server/100507.html

相关文章

Element UI导航菜单刷新就复原问题解决方法~

1、首先要知道为什么一刷新就复原了&#xff0c;是因为default-active属性设置的是默认值&#xff0c;是一个死值&#xff0c;一旦刷新就会复原&#xff0c;造成高亮不能保持&#xff0c;那么怎么解决呢&#xff1f; 2、很简单&#xff0c;无需像一些博主一样绑定path。思路&a…

机械行业数字化生产供应链产品解决方案(七)

在机械行业的数字化生产供应链产品解决方案中&#xff0c;通过全面部署物联网&#xff08;IoT&#xff09;传感器、智能分析平台和自动化控制系统&#xff0c;实现对生产设备的实时监控和数据采集&#xff0c;并结合大数据和人工智能技术进行深度分析&#xff0c;从而优化生产调…

达梦数据库(十) -------- mybatis-plus 整合达梦时,自动生成的 sql 语句报错

一丶【问题描述】&#xff1a; mybatis-plus 整合达梦时&#xff0c;应用系统项目的 sql 语句中包含数据库关键字&#xff0c;导致 mybatis-plus 自动生成的 sql 语句会报错&#xff0c;如下图所示&#xff1a; 二丶【问题解决】&#xff1a; 问题原因&#xff1a;mybatis-pl…

BUG分析以及BUG定位

一般来说bug大多数存在于3个模块&#xff1a; 1、前台界面&#xff0c;包括界面的显示&#xff0c;兼容性&#xff0c;数据提交的判断&#xff0c;页面的跳转等等&#xff0c;这些bug基本都是一眼可见的&#xff0c;不太需要定位&#xff0c;当然也不排除一些特殊情况&#xf…

【6大设计原则】依赖倒置原则:构建灵活软件架构的基石 - 通过代码实例深入解析

1.引言 1.1为什么要学习依赖倒置原则 在软件开发过程中&#xff0c;我们经常需要对代码进行修改和扩展。如果代码之间的耦合度过高&#xff0c;那么在进行修改或扩展时&#xff0c;可能会对其他部分的代码产生影响&#xff0c;甚至引发错误。这就要求我们在编写代码时&#xf…

ptqt5 打包把资源文件合进exe文件中 单个exe文件即可

目录 安装 PyInstaller 项目结构 编写 spec 文件 修改代码以嵌入资源 打包应用程序 解释 检查打包结果 使用 PyQt5 开发的应用程序可以通过 PyInstaller 工具打包成单个可执行文件(exe),并将所有资源文件(如图像、图标、样式表等)嵌入到 exe 文件中。以下是如何实现…

MySQL中的锁事

一、概述 锁是计算机在执行多线程或线程时用于并发访问同一共享资源时的同步机制&#xff0c;MySQL中的锁是在服务器层或者存储引擎层实现的&#xff0c;保证了数据访问的一致性与有效性。 事务的隔离性是由的锁来实现。 二、MySQL并发事务访问的问题 我们已经知道事务并发…

从数字化到数智化:消费零售企业如何实现门店数智化管理?

随着信息技术的飞速发展&#xff0c;数字化已成为企业转型的必经之路。然而&#xff0c;数字化本身并不是目的&#xff0c;而是通往数智化的桥梁。数智化&#xff0c;即数据智能化&#xff0c;是指企业通过数字化手段收集和分析数据&#xff0c;进而利用这些数据驱动决策和创新…