欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

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

C#.net試用MiniExcel優雅的操作Excel

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

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

1. 控件介紹

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

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

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

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

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

讀取 Excel 文件的數據,并將其轉換為多維數組或實體對象。

將多維數組或實體對象寫入 Excel 文件,并保存為.xlsx格式。

根據指定的范圍讀取或寫入數據。

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

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

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

2. 特點簡述

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

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

  • 支持即時操作每行數據。

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

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

  • 簡便操作的 API 風格。

3. 安裝

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

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

最后一次運行規格、結果:

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

現在我們做一個查詢、導入性能比較:

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

導出、創建Excel性能比較參見下圖:

5. 示例:

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

using MiniExcelLibs;public void ReadExcel(string filePath){    var result = MiniExcel.Query(filePath)                          .FirstOrDefault();    // 讀取第一行第一列的數據    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 文件的數據,并使用 FirstOrDefault 方法獲取第一個工作表的數據。通過索引可以訪問特定的單元格數據。

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

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

  4. Query 查詢 Excel 返回強型別 IEnumerable 數據。

  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. 指定單元格開始讀取數據

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

  1. 查詢所有 Sheet 名稱跟數據

  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"...]

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

6. 最后有話說

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

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

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


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