C#使用MiniExcel导入导出数据到Excel/CSV文件

MiniExcel简介

简单、高效避免OOM的.NET处理Excel查、写、填充数据工具。

目前主流框架大多需要将数据全载入到内存方便操作,但这会导致内存消耗问题,MiniExcel 尝试以 Stream 角度写底层算法逻辑,能让原本1000多MB占用降低到几MB,避免内存不够情况。

image-20240210212456544

特点:

  • 低内存耗用,避免OOM、频繁 Full GC 情况
  • 支持即时操作每行数据
  • 兼具搭配 LINQ 延迟查询特性,能办到低消耗、快速分页等复杂查询
  • 轻量,不需要安装 Microsoft Office、COM+,DLL小于150KB
  • 简便操作的 API 风格

项目地址:mini-software/MiniExcel: Fast, Low-Memory, Easy Excel .NET helper to import/export/template spreadsheet (support Linux, Mac) (github.com)

image-20240210212654050

安装 MiniExcel

image-20240209130817512

导出数据

 public class Student{public string? Name { get; set; }public string? Home { get; set; }public int? Age {  get; set; }   }//获得当前目录的路径string currentDirectory = Directory.GetCurrentDirectory();//合并当前目录与Excel文件名var path = Path.Combine(currentDirectory, $"{Guid.NewGuid()}.xlsx");List<Student> studentList = new List<Student>(){new Student { Name = "小东", Home = "New York", Age = 25 },new Student { Name = "小西", Home = "London", Age = 22 },new Student { Name = "小南", Home = "Paris", Age = 28 },new Student { Name = "小北", Home = "Tokyo", Age = 24 },new Student { Name = "小王", Home = "Berlin", Age = 26 }};MiniExcel.SaveAs(path, studentList);

导入Excel中如下图所示:

image-20240209131944852

但是目前还不支持Excel的插入:

image-20240209132453019

因此如果遇到不仅仅只是生成Excel,后续还要向Excel添加数据的需求,可以用csv代替:

 //获得当前目录的路径string currentDirectory = Directory.GetCurrentDirectory();//合并当前目录与CSV文件名var path = Path.Combine(currentDirectory, $"{Guid.NewGuid()}.csv");List<Student> studentList = new List<Student>(){new Student { Name = "小东", Home = "New York", Age = 25 },new Student { Name = "小西", Home = "London", Age = 22 },new Student { Name = "小南", Home = "Paris", Age = 28 },new Student { Name = "小北", Home = "Tokyo", Age = 24 },new Student { Name = "小王", Home = "Berlin", Age = 26 }};MiniExcel.SaveAs(path, studentList);

生成的CSV文件如下图所示:

image-20240209132904268

向CSV文件继续添加数据:

  //获得当前目录的路径string currentDirectory = Directory.GetCurrentDirectory();//合并当前目录与Excel文件名//var path = Path.Combine(currentDirectory, $"{Guid.NewGuid()}.csv");var path = Path.Combine(currentDirectory, "10de09bb-ad8c-4430-b717-5f24117a11a6.csv");List<Student> studentList = new List<Student>(){new Student { Name = "小东", Home = "New York", Age = 25 },new Student { Name = "小西", Home = "London", Age = 22 },new Student { Name = "小南", Home = "Paris", Age = 28 },new Student { Name = "小北", Home = "Tokyo", Age = 24 },new Student { Name = "小王", Home = "Berlin", Age = 26 }};//MiniExcel.SaveAs(path, studentList);MiniExcel.Insert(path, studentList);

继续添加数据后的CSV文件如下图所示:

image-20240209133412478

导入数据

 var path = "你的文件路径";var rows = MiniExcel.Query<Student>(path);

实现效果如下所示:

image-20240210214410232
公众号:DotNet学习交流,欢迎您的到来!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/690290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读,ProtoGen: Automatically Generating Directory Cache Coherence Protocols(三)

目录 一、Article:文献出处&#xff08;方便再次搜索&#xff09; &#xff08;1&#xff09;作者 &#xff08;2&#xff09;文献题目 &#xff08;3&#xff09;文献时间 &#xff08;4&#xff09;引用 二、Data:文献数据&#xff08;总结归纳&#xff0c;方便理解&am…

扫地机器人与项目管理

最近家里新装了一台扫地机器人&#xff0c;可以远程操控&#xff0c;每次回家前&#xff0c;都让它扫拖一遍&#xff0c;非常的干净。家里东西摆放比较杂乱&#xff0c;每次它要清理的面积都是一个不规则图形。通过几次的观察&#xff0c;发现它总是把要清理的区域先整个画一个…

1057:简单计算器

题目描述】 一个最简单的计算器&#xff0c;支持, -, *, / 四种运算。仅需考虑输入输出为整数的情况&#xff0c;数据和运算结果不会超过int表示的范围。然而&#xff1a; 1. 如果出现除数为0的情况&#xff0c;则输出&#xff1a;Divided by zero! 2. 如果出现无效的操作符(即…

TCP如何保证传输可靠性?

文章目录 前言1、连接管理1.1、三次握手1.2、四次挥手 2、校验和3、序列号 确认应答4、重传机制4.1、超时重传4.2、快速重传 5、流量控制5.1、累计应答5.2、滑动窗口 6、拥塞控制6.1、慢启动6.2、拥塞避免6.3、拥塞发生6.4、快速恢复 前言 文章参考&#xff1a; 《网络是怎样…

「年后复工主题」app用户运营拉新,接入引爆用户增长的活动

随着春节假期的结束&#xff0c;人们重返工作岗位&#xff0c;各行各业也迎来了年后复工的高峰期。在这个时间节点&#xff0c;APP运营团队面临着一个绝佳的机遇——利用节日余温和复工活力&#xff0c;通过策划一系列相关主题的趣味活动来吸引新用户&#xff0c;实现用户增长的…

文件上传漏洞--Upload-labs--Pass06--空格绕过

一、什么是空格绕过 在Windows系统中&#xff0c;Windows特性会自动删除文件后缀名后的空格&#xff0c;这使我们看 .php 和 .php 二者没有任何区别&#xff0c;实际上二者是有区别的。若网页源码没有使用 trim()函数 来进行去除空格的操作&#xff0c;就会使网页存在 空格绕…

什么样的服务器是高性能服务器?

首先&#xff0c;高性能服务器应具备高处理能力。随着业务的不断扩展和数据量的爆炸性增长&#xff0c;高性能服务器需要具备强大的计算能力&#xff0c;能够快速处理各种复杂的业务和数据。这要求高性能服务器采用先进的处理器技术&#xff0c;如多核处理器、GPU加速等&#x…

IDEA中创建web项目(配置tomcat,tomcat启动报程序包javax.servlet.http不存在,tomcat控制台乱码问题)

文章目录 一、新建动态web项目1、新建项目2、选择创建动态web项目3、项目命名4、编辑index.jsp 二、配置Tomcat1、新增tomcat服务器配置2、选择服务器类型3、配置服务器参数4、部署项目5、完成配置6、启动运行7、访问web项目 三、tomcat启动报程序包javax.servlet.http不存在四…

个人简历补充

个人简历补充 1.对工作的认识2.八股文和知识面3.框架/架构角度深扒3.1 前端3.1.1 mPaaS&#xff08;移动领域&#xff09;3.1.2 普通前端项目框架3.1.3 微前端 3.2 后端 持续更新 1.对工作的认识 2.八股文和知识面 前端&#xff08;基础知识 / 开发能力 / 总结输出能力&#xf…

vue-productionSourceMap作用

当其设置为false时(productionSourceMap: false) 当其设置为true时(productionSourceMap: true) 注:1.当设置为true时,打包后每个文件都有一个.map文件,其目的是为了精确定位代码错误 2.当设置为false时,可减少项目打包大小 3.正式环境禁止使用true,因为其可通过反编译.map文件…

HCIA-HarmonyOS设备开发认证V2.0-IOT硬件子系统-UART

目录 一、UART 概述二、UART 模块相关API三、UART 接口调用实例四、UART HDF驱动开发4.1、开发步骤(待续...) 坚持就有收获 一、UART 概述 UART 是通用异步收发传输器&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;的缩写&#xff0c;是通用串行数据总…

调用百度文心AI作画API实现中文-图像跨模态生成

作者介绍 乔冠华&#xff0c;女&#xff0c;西安工程大学电子信息学院&#xff0c;2020级硕士研究生&#xff0c;张宏伟人工智能课题组。 研究方向&#xff1a;机器视觉与人工智能。 电子邮件&#xff1a;1078914066qq.com 一&#xff0e;文心AI作画API介绍 1. 文心AI作画 文…

上传(图片)文件的功能实现

说句实话&#xff0c;现在的开发简单多了。因为有现成的第三方的上传文件的代码。如果放在我们以前做开发&#xff0c;上传文件的代码都得自己写。 那现在的程序员面对上传文件的功能到底写啥代码。 1&#xff09;、对于前端人员&#xff1a;就是把后端的请求地址&#xff0c…

阿基米德签证小程序管理系统功能清单

阿基米德签证小程序管理系统&#xff0c;底层架构采用当前国内最流行的php框架thinkphp8.0、采用广泛使用的MYSQL数据库&#xff0c;管理后台前后台分离&#xff0c;同时使用了当今最流行的基于VUE3和elementPlus前端框架&#xff0c;小程序采用了支持多端合一的UNI-APP开发&am…

Kernel 地图

前言 在 Linux Kernel 中&#xff0c;根据 Makefile 和 Kconfig&#xff0c;可以快速地了解一个小的内核子系统。所以我将这两个文件称之为 Kernel 地图。 Kernel 地图 基本上&#xff0c;Linux 内核中&#xff0c;每一个目录下面都有一个 Makefile 和一个 Kconfig 文件。这…

docker 安装达梦dm8 包含lincese

1.加载达梦数据库docker镜像 dm_v8.1.1.66_x86_rh7_64_ent.tar为申请的镜像文件。 docker load -i dm_v8.1.1.66_x86_rh7_64_ent.tar 查看镜像 docker images 创建达梦数据库容器 执行创建命令&#xff1a; docker run -d -p 30236:5236 --restartalways --name dm8_test…

Day11-Linux系统iNode及链接知识及企业按哪里精讲

Day11-Linux系统iNode及链接知识及企业按哪里精讲 1. 文件核心 属性知识1.1 什么是索引节点&#xff08;inode&#xff09;。1.2 索引节点作用1.3 inode是怎么产生的&#xff1f;1.4 inode的特点&#xff1f;1.5 Linux系统读取文件的原理1.6 企业生产案例&#xff1a;No space …

行人重识别综述

Deep Learning for Person Re-identification: A Survey and Outlook 论文地址https://arxiv.org/pdf/2001.04193 1. 摘要 we categorize it into the closed-world and open-world settings. closed-world&#xff1a;学术环境下 open-world &#xff1a;实际应用场景下 2…

Python系列(15)—— int类型转string类型

Python中的int类型转string类型 一、引言 在Python编程中&#xff0c;我们经常会遇到需要将整数&#xff08;int&#xff09;类型转换为字符串&#xff08;string&#xff09;类型的情况。例如&#xff0c;当我们需要将数字与文本结合时&#xff0c;或者当我们需要将数字写入…

【算法 - 动态规划】力扣 691. 贴纸拼词

上一篇文章中的两道较为简单的题目都是通过 暴力递归 逐步修改成为 动态规划 &#xff0c;并使用了严格的 dp表依赖 &#xff0c;相信小伙伴对此有了初步的认识。 本文我们来练习一道 LeetCode 中 Hard 级别&#xff0c;不使用严格的表依赖的题目。 力扣691. 贴纸拼词 我们有…