亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

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

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

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

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

1. 控件介紹

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

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

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

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

使用 MiniExcel 可以進(jìn)行以下操作:

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

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

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

支持對單元格的樣式、格式進(jìn)行設(shè)置。

項(xiàng)目目標(biāo)是:力求做最簡單、最實(shí)用的Excel控件!

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

2. 特點(diǎn)簡述

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

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

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

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

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

  • 簡便操作的 API 風(fēng)格。

3. 安裝

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

dotnet add package MiniExcel --version 1.23.2

4. 性能比較與測試

Benchmarks 邏輯可以在 MiniExcel.Benchmarks 中進(jìn)行查看或是提交 PR,運(yùn)行指令如下:

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

最后一次運(yùn)行規(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)在我們做一個(gè)查詢、導(dǎo)入性能比較:

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

導(dǎo)出、創(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 方法獲取第一個(gè)工作表的數(shù)據(jù)。通過索引可以訪問特定的單元格數(shù)據(jù)。

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

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

  4. Query 查詢 Excel 返回強(qiáng)型別 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"...]

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

6. 最后有話說

這個(gè)開源項(xiàng)目提供全部源代碼,方便大家下載,還提供了很詳細(xì)的文檔說明。

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

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


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