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

C#.net試用MiniExcel優(yōu)雅的操作Excel

admin
2023年9月7日 16:8 本文熱度 3046

大家有沒有過這樣的經(jīng)歷:開發(fā)某個項目,需要調(diào)用Excel控件去生成Excel文件、填充數(shù)據(jù)、改變格式等等,常常在測試環(huán)境中一切正常,但在生產(chǎn)環(huán)境卻無法正常調(diào)用Excel,不是安裝的Excel版本不正確導致調(diào)用錯誤,就是因為超額數(shù)據(jù)量導致調(diào)用控件消耗內(nèi)存過大,無法順利解決問題,搞得碼農(nóng)心態(tài)崩潰,導致DeadLine延遲?現(xiàn)在好了,鐺鐺鐺,值得推薦的一款實用控件來了:MiniExcel!

1. 控件介紹

MiniExcel簡單、高效避免’OOM’的.NET處理Excel查、寫、填充數(shù)據(jù)工具。

‘OOM’,全稱“Out Of Memory”,意思是“內(nèi)存用完了”。它來源于java.lang.OutOfMemoryError。

目前主流框架大多需要將數(shù)據(jù)全載入到內(nèi)存方便操作,但這會導致內(nèi)存消耗問題,MiniExcel嘗試以 Stream角度寫底層算法邏輯,能讓原本1000多MB占用降低到幾MB,避免內(nèi)存不夠情況,而且不再要求系統(tǒng)本身必須安裝Excel。

MiniExcel 是一個在 .NET 平臺上用于操作 Excel 文件的庫。它的特點是輕量級、簡單易用,并且支持讀取和寫入 Excel 文件的功能。

使用 MiniExcel 可以進行以下操作:

讀取 Excel 文件的數(shù)據(jù),并將其轉(zhuǎn)換為多維數(shù)組或?qū)嶓w對象。

將多維數(shù)組或?qū)嶓w對象寫入 Excel 文件,并保存為.xlsx格式。

根據(jù)指定的范圍讀取或?qū)懭霐?shù)據(jù)。

支持對單元格的樣式、格式進行設置。

項目目標是:力求做最簡單、最實用的Excel控件!

這個項目已經(jīng)被dotNET China收錄,成為一個很有前途的開源項目,并在Gitee上得到站點推薦,得到了1.1KStars。

2. 特點簡述

  • 支持.Net4.5,.Net5.0,Core .Net2.0。

  • 低內(nèi)存耗用,避免’OOM’(out of memoery)、頻繁 Full GC 情況。

  • 支持即時操作每行數(shù)據(jù)。

  • 兼具搭配 LINQ 延遲查詢特性,能辦到低消耗、快速分頁等復雜查詢。

  • 輕量,不需要安裝 Microsoft Office、COM+,DLL小于150KB。

  • 簡便操作的 API 風格。

3. 安裝

這個項目是通過NuGet包實現(xiàn)安裝。簡單來說,就是在.NET CLI模式下,執(zhí)行如下命令即可自動安裝:

dotnet add package MiniExcel --version 1.23.2

4. 性能比較與測試

Benchmarks 邏輯可以在 MiniExcel.Benchmarks 中進行查看或是提交 PR,運行指令如下:

dotnet run -p .\\benchmarks\\MiniExcel.Benchmarks\\ -c Release -f netcoreapp3.1 \-- -f \* --join

最后一次運行規(guī)格、結(jié)果:

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042 Intel Core i7-7700 CPU 3.60GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores [Host] : .NET Framework 4.8 (4.8.4341.0), X64 RyuJIT Job-ZYYABG : .NET Framework 4.8 (4.8.4341.0), X64 RyuJIT IterationCount=3 LaunchCount=3 WarmupCount=3

現(xiàn)在我們做一個查詢、導入性能比較:

邏輯 : 以 Test1,000,000x10.xlsx 做基準與主流框架做性能測試,總共 1,000,000 行 *
10 列筆 “HelloWorld”,文件大小 23 MB。測試結(jié)果列在下圖中:

導出、創(chuàng)建Excel性能比較參見下圖:

5. 示例:

下面將給出部分樣例和效果圖,供大家參考。

using MiniExcelLibs;public void ReadExcel(string filePath){    var result = MiniExcel.Query(filePath)                          .FirstOrDefault();    // 讀取第一行第一列的數(shù)據(jù)    var data = result?[0][0];    Console.WriteLine(data);}public void WriteExcel(string filePath){    var data = new List<object[]>    {        new object[] { "Name", "Age" },        new object[] { "John", 25 },        new object[] { "Amy", 30 }    };    MiniExcel.Save(filePath, data);}

  1. 以上示例代碼中,通過 MiniExcel.Query 方法可以讀取 Excel 文件的數(shù)據(jù),并使用 FirstOrDefault 方法獲取第一個工作表的數(shù)據(jù)。通過索引可以訪問特定的單元格數(shù)據(jù)。

  2. 通過 MiniExcel.Save 方法可以將數(shù)據(jù)寫入 Excel 文件,并保存為指定的路徑。

  3. MiniExcel 簡化了對 Excel 文件的讀寫操作,適用于簡單的數(shù)據(jù)處理需求。相比于其他更復雜的庫,MiniExcel 是一個更輕量級的選擇,對于一些小規(guī)模的 Excel 操作場景可能更加適合。

  4. Query 查詢 Excel 返回強型別 IEnumerable 數(shù)據(jù)。

  5.    public class UserAccount    {    public Guid ID { get; set; }    public string Name { get; set; }    public DateTime BoD { get; set; }    public int Age { get; set; }    public bool VIP { get; set; }    public decimal Points { get; set; }    }    var rows = MiniExcel.Query\<UserAccount\>(path);

// or

   using (var stream = File.OpenRead(path))    var rows = stream.Query\<UserAccount\>();

  1. 指定單元格開始讀取數(shù)據(jù)

  2. MiniExcel.Query(path,useHeaderRow:true,startCell:"B3")

  1. 查詢所有 Sheet 名稱跟數(shù)據(jù)

  2.    var sheetNames = MiniExcel.GetSheetNames(path);    foreach (var sheetName in sheetNames)    {        var rows = MiniExcel.Query(path, sheetName: sheetName);    }
  3. 查詢所有欄(列)

  4. var columns = MiniExcel.GetColumns(path); // e.g result : ["A","B"...]

高頻使用示例就介紹到這里啦,有需求的伙伴可以自行獲取項目地址學習更多優(yōu)秀示例。

6. 最后有話說

這個開源項目提供全部源代碼,方便大家下載,還提供了很詳細的文檔說明。

以本人使用經(jīng)驗來看,這個控件已經(jīng)基本滿足了調(diào)用Excel控件開發(fā)需求,大家可以多多嘗試。而且,這個項目的團隊依然在繼續(xù)維護,讓人很看好。

有一個這么好用的工具,在項目開發(fā)過程中會讓你不用擔心內(nèi)存不夠用,不用考慮對Excel的內(nèi)容大小進行限制。所以本人很有誠意的推薦這款Mini控件啦。還有,通過對源代碼的學習,可以提高自己的水平。


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

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲乱码中文字幕精品久久 | 亚洲精品无播放器在线播放网站 | 亚洲精品嫩草影院久久 | 亚洲一区二区三区四区在线观看 | 日韩一区二区三区在线观看视频 | 日本有码在线视 |