LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

推薦一款Excel讀寫(xiě)神器之MiniExcel入門(mén)詳解

admin
2025年6月23日 13:32 本文熱度 311

在實(shí)際應(yīng)用中,經(jīng)常需要用到數(shù)據(jù)的導(dǎo)入與導(dǎo)出,而在這些導(dǎo)入導(dǎo)出功能中,最常用的就是Excel格式,它能非常方便的實(shí)現(xiàn)格式化數(shù)據(jù)呈現(xiàn)。目前主流框架大多需要將數(shù)據(jù)全載入到內(nèi)存方便操作,但如果數(shù)據(jù)量過(guò)大,這可能會(huì)導(dǎo)致內(nèi)存消耗問(wèn)題,今天介紹的MiniExcel 嘗試以 Stream 角度寫(xiě)底層算法邏輯,能讓原本1000多MB占用降低到幾MB,避免內(nèi)存不夠情況。本文以一些簡(jiǎn)單的小例子,簡(jiǎn)述MiniExcel的常見(jiàn)用法,僅供學(xué)習(xí)分享之用,如有不足之處,還請(qǐng)指正。


什么是MiniExcel?


MiniExcel是.Net基金會(huì)旗下的項(xiàng)目,是一款簡(jiǎn)單、高效避免OOM(Out of Memory)的.NET處理Excel查、寫(xiě)、填充數(shù)據(jù)工具。

?


MiniExcel特點(diǎn)


  • 與其他Excel處理框架相比,MiniExcel具有如下特點(diǎn):
  • 低內(nèi)存耗用,避免OOM、頻繁 Full GC 情況
  • 支持即時(shí)操作每行數(shù)據(jù)
  • 兼具搭配 LINQ 延遲查詢特性,能辦到低消耗、快速分頁(yè)等復(fù)雜查詢
  • 輕量,不需要安裝 Microsoft Office、COM+,DLL小于150KB
  • 簡(jiǎn)便操作的 API 風(fēng)格


Excel操作性能比較


以下是MiniExcel官方列出的與其他Excel框架的的性能比較。主要分為讀取和寫(xiě)入,如下所示:


1. 導(dǎo)入和查詢比較

邏輯 : 以 Test1,000,000x10.xlsx 做基準(zhǔn)與主流框架做性能測(cè)試,總共 1,000,000 行 * 10 列筆 "HelloWorld",文件大小 23 MB


2. 導(dǎo)出和創(chuàng)建Excel


邏輯 : 創(chuàng)建1千萬(wàn)筆 "HelloWorld"

通過(guò)上述對(duì)比,可以發(fā)現(xiàn),MiniExcel無(wú)論在讀取,還是寫(xiě)入,性能都挺不錯(cuò),值得學(xué)習(xí)。


MinExcel安裝


在Visual Studio 2022中,可以通過(guò)Nuget包管理器進(jìn)行安裝,當(dāng)前最新版本為v1.41.1,如下所示:


MinExcel讀取


MiniExcel最強(qiáng)大之處,將Excel中的列和模型中的屬性名,進(jìn)行自動(dòng)匹配,進(jìn)而實(shí)現(xiàn)ORM,減少手動(dòng)匹配的繁瑣操作。如下所示:
當(dāng)前有一個(gè)Persons.xlsx的Excel,如下所示:
我們創(chuàng)建一個(gè)Person的模型類,如下所示:
namespace DemoMiniExcel{    public class Person    {        public int ID { getset; }
        public string Name { getset; }
        public int Age { getset; }    }}
然后通過(guò)MiniExcel的Query方法進(jìn)行查詢,Query方法返回值支持泛型操作,傳入指定的模型類對(duì)象,如下所示:
namespace DemoMiniExcel{    internal class Program    {        static void Main(string[] args)        {            string excel = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "Person.xlsx");            var rows = MiniExcel.Query<Person>(excel).ToList();            if (rows.Count > 0)            {                foreach (var item in rows)                {                    Console.WriteLine($"ID={item.ID},Name={item.Name},Age={item.Age}");                }            }            Console.WriteLine("Hello, World!");        }    }}
測(cè)試示例,如下所示:
在上述示例中采用MiniExcel的Query方法只是其中一種方式,還可以通過(guò)MiniExcel對(duì)Stream的擴(kuò)展方法Query進(jìn)行操作,如下所示:
namespace DemoMiniExcel{    internal class Program    {        static void Main(string[] args)        {            string excel = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "Person.xlsx");            using (var stream = File.OpenRead(excel))            {                var rows = stream.Query<Person>().ToList();                if (rows.Count > 0)                {                    foreach (var item in rows)                    {                        Console.WriteLine($"ID={item.ID},Name={item.Name},Age={item.Age}");                    }                }            }            Console.WriteLine("Hello, World!");        }    }}
實(shí)例運(yùn)行效果和上面一樣,不再贅述。

MinExcel寫(xiě)入


MiniExcel支持將對(duì)象數(shù)據(jù)寫(xiě)入到Excel,可以通過(guò)MiniExcel提供的SaveAs方法,將對(duì)象數(shù)據(jù)寫(xiě)入Excel,如下所示:

string excel = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "Person2.xlsx");var persons = new List<Person>();for (int i = 0; i < 10; i++){    persons.Add(new Person()    {        ID = i,        Name = "A" + i.ToString(),        Age = 20 + i,    });}MiniExcel.SaveAs(excel, persons);

MiniExcel寫(xiě)入的Excel,默認(rèn)還自帶格式,如下所示:

同時(shí)MiniExcel,還支持Stream的讀寫(xiě)方式創(chuàng)建Excel,如下所示:

string excel = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "Person3.xlsx");var persons = new List<Person>();for (int i = 0; i < 10; i++){    persons.Add(new Person()    {        ID = i,        Name = "A" + i.ToString(),        Age = 20 + i,    });}using (var stream = File.Create(excel)){    stream.SaveAs(persons);}

實(shí)例運(yùn)行后,導(dǎo)出的Excel效果和上面一樣,不再贅述。



參考文檔


本文主要介紹MiniExcel的簡(jiǎn)單用途,關(guān)于更多內(nèi)容,請(qǐng)參考官方文檔:https://gitee.com/dotnetchina/MiniExcel


閱讀原文:原文鏈接


該文章在 2025/6/23 15:11:19 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
伊人久久婷婷综合五月97色 | 亚洲Av电影院在线观看 | 伊人依成久久人综合网 | 一本一本久久a久久精品综合不卡 | 思思热视频精品在线播放 | 欧美华人在线视频 |