公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

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

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

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

大家有沒有過這樣的經歷:開發某個項目,需要調用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

主站蜘蛛池模板: 国产自国产自愉自愉免费 | 国产麻豆国精精品久久毛片 | 91九色国产操逼无码视频 | 91亚洲自偷手| 国产一区二区三区美女秒播 | 成人欧美一区二区三 | 成人自拍视频在线观看 | 精品一区二区三区不卡久久久 | 国产成人午夜视频影院免费观看 | 国产美女视频一区二区二三区 | 国产精品无码久久久久一区二区 | 18禁动漫一区 | 国产成人综合亚洲欧洲色就色 | 东京热无码中文字幕av专区 | 国产一区二区三区视频网站 | 国产重口调教在线观看 | 91精品国产乱码在 | 丰满爆乳少妇中文无码 | 国产亚洲欧美精品一区 | 国产无码一区二区三区在线观看 | 精品视频一区二区三区四区五区 | 国产亚洲中文在线字幕 | 国产熟女丝袜高跟视频 | 国产高清午夜人成在线观看 | 国产精品免费一级在线观看 | 果冻传媒2025一二三区 | 18国产精品 | 91香蕉国产亚洲一区二区三区 | 国产美女口爆吞精系列 | 成人α片免费视频在线观看 | 国产亚洲日韩a欧美在线观看 | 成人综合天天影院 | 国产综合网一区二区三区视频 | 寡妇高潮一级毛片在线播放一 | 动漫av纯肉无码av电影网 | 91看片淫黄大片一级在线观看 | 国产在线拍揄自揄拍无码视频 | 91制片厂果冻星空传媒喜剧 | 韩国少妇激三级做爰在线观看 | 99久久无码精品一区二区毛片 | 91av一区|