狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

推薦一款Excel讀寫神器之MiniExcel入門詳解

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

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


什么是MiniExcel?


MiniExcel是.Net基金會旗下的項目,是一款簡單、高效避免OOM(Out of Memory)的.NET處理Excel查、寫、填充數據工具。

?


MiniExcel特點


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


Excel操作性能比較


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


1. 導入和查詢比較

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


2. 導出和創建Excel


邏輯 : 創建1千萬筆 "HelloWorld"

通過上述對比,可以發現,MiniExcel無論在讀取,還是寫入,性能都挺不錯,值得學習。


MinExcel安裝


在Visual Studio 2022中,可以通過Nuget包管理器進行安裝,當前最新版本為v1.41.1,如下所示:


MinExcel讀取


MiniExcel最強大之處,將Excel中的列和模型中的屬性名,進行自動匹配,進而實現ORM,減少手動匹配的繁瑣操作。如下所示:
當前有一個Persons.xlsx的Excel,如下所示:
我們創建一個Person的模型類,如下所示:
namespace DemoMiniExcel{    public class Person    {        public int ID { getset; }
        public string Name { getset; }
        public int Age { getset; }    }}
然后通過MiniExcel的Query方法進行查詢,Query方法返回值支持泛型操作,傳入指定的模型類對象,如下所示:
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!");        }    }}
測試示例,如下所示:
在上述示例中采用MiniExcel的Query方法只是其中一種方式,還可以通過MiniExcel對Stream的擴展方法Query進行操作,如下所示:
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!");        }    }}
實例運行效果和上面一樣,不再贅述。

MinExcel寫入


MiniExcel支持將對象數據寫入到Excel,可以通過MiniExcel提供的SaveAs方法,將對象數據寫入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寫入的Excel,默認還自帶格式,如下所示:

同時MiniExcel,還支持Stream的讀寫方式創建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);}

實例運行后,導出的Excel效果和上面一樣,不再贅述。



參考文檔


本文主要介紹MiniExcel的簡單用途,關于更多內容,請參考官方文檔:https://gitee.com/dotnetchina/MiniExcel


閱讀原文:原文鏈接


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