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

【C#】一個(gè)簡單高效低內(nèi)存的.NET操作Excel開源框架 - MiniExcel

admin
2023年10月23日 19:3 本文熱度 976

前言

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

官方介紹

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

項(xiàng)目特點(diǎn)

  • 低內(nèi)存耗用,避免OOM、頻繁 Full GC 情況。
  • 支持即時(shí)操作每行數(shù)據(jù)。
  • 兼具搭配 LINQ 延遲查詢特性,能辦到低消耗、快速分頁等復(fù)雜查詢。
  • 輕量,不需要安裝 Microsoft Office、COM+,DLL小于150KB。
  • 簡便操作的 API 風(fēng)格。

主流Excel操作框架性能對比

導(dǎo)入、查詢 Excel 比較

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

快速開始

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

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

public class UserAccount
{
    public Guid ID { getset; }
    public string Name { getset; }
    public DateTime BoD { getset; }
    public int Age { getset; }
    public bool VIP { getset; }
    public decimal Points { getset; }
}

var rows = MiniExcel.Query<UserAccount>(path);

// or

using (var stream = File.OpenRead(path))
    var rows = stream.Query<UserAccount>();

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

支持集合<匿名類別>或是<強(qiáng)型別>

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<stringobject>>()
{
    new Dictionary<string,object>{{ "Column1""MiniExcel" }, { "Column2"1 } },
    new Dictionary<string,object>{{ "Column1""Github" }, { "Column2"2 } }
};
MiniExcel.SaveAs(path, values);

IDataReader

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

MiniExcel.SaveAs(path, reader);

推薦 DataReader 多表格導(dǎo)出方式(建議使用 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);
}

項(xiàng)目源碼地址

https://gitee.com/dotnetchina/MiniExcel


該文章在 2023/10/23 19:03:17 編輯過
關(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

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
日韩动漫一区在线观看 | 色婷婷三级在线观看 | 在线观看一级大片婷婷 | 日本国产高清不卡视频 | 宅女午夜福利免费视频 | 中文字幕久久天堂一区二区 |