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

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

一個簡單高效低內存的.NET操作Excel開源框架 - MiniExcel

freeflydom
2023年10月26日 16:18 本文熱度 1628

作者:大姚

導讀

MiniExcel簡單、高效避免OOM的.NET處理Excel查、寫、填充數據工具。目前主流框架大多需要將數據全載入到內存方便操作,但這會導致內存消耗問題,MiniExcel 嘗試以 Stream 角度寫底層算法邏輯,能讓原本1000多MB占用降低到幾MB,避免內存不夠情況。


前言

日常工作中經常與數據打交道的同學肯定會難以避免對Excel的一些數據操作如導入、導出等,但是當對一些大數據量操作Excel時經常會遇到一個常見的問題內存溢出。今天給大家推薦一個簡單、高效、低內存避免OOM(內存溢出)的.NET操作Excel開源框架:MiniExcel。

官方介紹

MiniExcel簡單、高效避免OOM的.NET處理Excel查、寫、填充數據工具。目前主流框架大多需要將數據全載入到內存方便操作,但這會導致內存消耗問題,MiniExcel 嘗試以 Stream 角度寫底層算法邏輯,能讓原本1000多MB占用降低到幾MB,避免內存不夠情況。

圖片

項目特點

  • 低內存耗用,避免OOM、頻繁 Full GC 情況。

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

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

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

  • 簡便操作的 API 風格。

主流Excel操作框架性能對比

導入、查詢 Excel 比較

圖片

導出、創建 Excel 比較

圖片

快速開始

注意:下面只展示部分代碼示例,詳情框架功能請前往源碼地址查看:https://gitee.com/dotnetchina/MiniExcel

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

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);// orusing (var stream = File.OpenRead(path))
    var rows = stream.Query<UserAccount>();

圖片

Query 查詢 Excel 返回Dynamic IEnumerable 數據

var rows = MiniExcel.Query(path).ToList();// or using (var stream = File.OpenRead(path)){
    var rows = stream.Query().ToList();
                
    Assert.Equal("MiniExcel", rows[0].A);
    Assert.Equal(1, rows[0].B);
    Assert.Equal("Github", rows[1].A);
    Assert.Equal(2, rows[1].B);}

支持集合<匿名類別>或是<強型別>

var path = Path.Combine(Path.GetTempPath(), $"{Guid.NewGuid()}.xlsx");MiniExcel.SaveAs(path, new[] {
    new { Column1 = "MiniExcel", Column2 = 1 },
    new { Column1 = "Github", Column2 = 2}
});

IEnumerable<IDictionary<string, object>>

var values = new List<Dictionary<string, object>>(){
    new Dictionary<string,object>{{ "Column1", "MiniExcel" }, { "Column2", 1 } },
    new Dictionary<string,object>{{ "Column1", "Github" }, { "Column2", 2 } }
};MiniExcel.SaveAs(path, values);

圖片

IDataReader

推薦使用,可以避免載入全部數據到內存.

MiniExcel.SaveAs(path, reader);

圖片

推薦 DataReader 多表格導出方式(建議使用 Dapper executeReader )

using (var cnn = Connection){
    cnn.Open();
    var sheets = new Dictionary<string,object>();
    sheets.Add("sheet1", cnn.executeReader("select 1 id"));
    sheets.Add("sheet2", cnn.executeReader("select 2 id"));
    MiniExcel.SaveAs("Demo.xlsx", sheets);}

項目源碼地址

更多項目實用功能和特性歡迎前往項目開源地址查看👀,別忘了給項目一個Star支持💖。

https://gitee.com/dotnetchina/MiniExcel

優秀項目和框架精選

該項目已收錄到C#/.NET/.NET Core優秀項目和框架精選中,關注優秀項目和框架精選能讓你及時了解C#、.NET和.NET Core領域的最新動態和最佳實踐,提高開發工作效率和質量。坑已挖,歡迎大家踴躍提交PR推薦或自薦(讓優秀的項目和框架不被埋沒🤞)。

https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md


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

主站蜘蛛池模板: 成人夜色香网站在线观 | 国产成人卡2卡3卡4 国产成人另类视频在线播放 | av天堂无码资源网 | 国产深夜男女无套内射 | 国产精品无码久久av嫩草 | 国产电影一区二区三区 | 国产精品无码aⅴ一区二区三区 | 暴力调教一区二区三区 | 成人午夜高潮a∨猛片 | 岛国av无码精品一区二区三区 | 国产精品一区二区三区四区五区 | 国产麻豆放荡av剧情演绎 | 国产精品国产免无码专区 | 国产a级毛片免费视频一区二区 | 国产高清免费在线观看精品 | 国产内射 | 国产精品成人午夜电影 | 丰满少妇三级全黄 | 国产欧美日本精品 | 99久久精品无码一 | 国模精品一区二区三区 | 2025久久国自产拍精品 | 东京热久久综合久久 | 国产爆乳无码在线观看 | 国产成人精品久久亚洲高清不卡p | 91在线无码精品秘入口竹美 | 丰满人妻熟妇乱又伦精品视 | 精品亚洲一区二区三区在线 | 国产麻豆蜜芽 | 国产精品亚洲专区无码性色 | 国产在线一区二区三区色欲观看 | 国产精品午夜高清在线观看 | 成人国产精品免费视频 | 91大神最新国自产拍在线播放 | 91久久如何满足用户需求 | av日韩国产一区二区三区 | 国产无码一区二区在线观看 | av喷水高潮喷水在线观看 | 国产欧美日韩综合一区二区三区 | 精品69视频一区二区三区 | 国精品无码一区二区三区在线 |