日本电影一区二区_日本va欧美va精品发布_日本黄h兄妹h动漫一区二区三区_日本欧美黄色

一個簡單高效低內(nèi)存的.NET操作Excel開源框架 – MiniExcel(.net core 開源框架)

一個簡單高效低內(nèi)存的.NET操作Excel開源框架 - MiniExcel(.net core 開源框架)一個簡單高效低內(nèi)存的.NET操作Excel開源框架 - MiniExcel(.net core 開源框架)

前言

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

官方介紹

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

一個簡單高效低內(nèi)存的.NET操作Excel開源框架 - MiniExcel(.net core 開源框架)

項目特點

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

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

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

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

  • 簡便操作的 API 風格。

主流Excel操作框架性能對比

導入、查詢 Excel 比較

一個簡單高效低內(nèi)存的.NET操作Excel開源框架 - MiniExcel(.net core 開源框架)

導出、創(chuàng)建 Excel 比較

一個簡單高效低內(nèi)存的.NET操作Excel開源框架 - MiniExcel(.net core 開源框架)

快速開始

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

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

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>;

一個簡單高效低內(nèi)存的.NET操作Excel開源框架 - MiniExcel(.net core 開源框架)

Query 查詢 Excel 返回Dynamic IEnumerable 數(shù)據(jù)


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);

一個簡單高效低內(nèi)存的.NET操作Excel開源框架 - MiniExcel(.net core 開源框架)

IDataReader

推薦使用,可以避免載入全部數(shù)據(jù)到內(nèi)存.

MiniExcel.SaveAs(path, reader);

一個簡單高效低內(nèi)存的.NET操作Excel開源框架 - MiniExcel(.net core 開源框架)

推薦 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

優(yōu)秀項目和框架精選

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

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

相關新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部
新平| 巴中市| 哈密市| 芦山县| 江门市| 乌鲁木齐县| 延安市| 乌兰察布市| 土默特左旗| 临夏县| 通河县| 深州市| 甘南县| 阿克| 油尖旺区| 娱乐| 深泽县| 武清区| 襄垣县| 武邑县| 密山市| 和政县| 高密市| 和林格尔县| 门源| 怀集县| 福建省| 肃宁县| 景泰县| 金堂县| 宁波市| 微博| 扎囊县| 阳春市| 江都市| 伊宁市| 宁乡县| 丰原市| 淮阳县| 澜沧| 重庆市|