C#不要再使用Npoi啦,使用MiniExcel操作Excel文件更快更高效!
1.簡(jiǎn)介
? ? MiniExcel簡(jiǎn)單、高效避免OOM的.NET處理Excel查、寫(xiě)、填充數(shù)據(jù)工具。
目前主流框架如Npoi 需要將數(shù)據(jù)全載入到內(nèi)存方便操作,但這會(huì)導(dǎo)致內(nèi)存消耗問(wèn)題。
MiniExcel 嘗試以 Stream 角度寫(xiě)底層算法邏輯,能讓原本1000多MB占用降低到幾MB,避免內(nèi)存不夠情況。
2.特點(diǎn)
? ?低內(nèi)存耗用,避免OOM(out of memoery)、頻繁 Full GC 情況
支持即時(shí)操作每行數(shù)據(jù)
兼具搭配 LINQ 延遲查詢特性,能辦到低消耗、快速分頁(yè)等復(fù)雜查詢
輕量,不需要安裝 Microsoft Office、COM+,DLL小于150KB
簡(jiǎn)便操作的 API 風(fēng)格。
3.特點(diǎn)
低內(nèi)存耗用,避免OOM(out of memoery)、頻繁 Full GC 情況
支持即時(shí)操作每行數(shù)據(jù),
兼具搭配 LINQ 延遲查詢特性,能辦到低消耗、快速分頁(yè)等復(fù)雜查詢
輕量,不需要安裝 Microsoft Office、COM+,DLL小于150KB
簡(jiǎn)便操作的 API 風(fēng)格.
4.使用
安裝
使用Nuget搜索Miniexcel安裝
準(zhǔn)備一個(gè)Excel測(cè)試文件
里面有三列,Id,Name,Title
再寫(xiě)入20行數(shù)據(jù)
我們?cè)谑褂肣uery 查詢 Excel 返回強(qiáng)型別 IEnumerable 數(shù)據(jù)
既然是強(qiáng)類(lèi)型 那我們我們就要寫(xiě)一個(gè)Model類(lèi)
public class Test{public int Id { get; set; }public string Name { get; set; }public string Title { get; set; }}為了大家看得方便明了,我這里使用winform進(jìn)行測(cè)試? miniexcel 支持.net framework 和.net core 。
查詢就一行代碼,簡(jiǎn)單明了,比Npoi是不是看起來(lái)就好多了
var rows = MiniExcel.Query<Test>(path).ToList();uiDataGridView1.DataSource = rows;寫(xiě)入并另存為文件也很簡(jiǎn)單
?MiniExcel.SaveAs(@"D:\測(cè)試文檔全部導(dǎo)出.xlsx", rows);
重寫(xiě)標(biāo)題另存就需要寫(xiě)一個(gè)重寫(xiě)標(biāo)題的方法
private IEnumerable<Dictionary<string, object>> GetOrders(List<Test> test){foreach (var item in test){var newCompanyPrepareds = new Dictionary<string, object>();newCompanyPrepareds.Add("Id", item.Id);newCompanyPrepareds.Add("姓名", item.Name);newCompanyPrepareds.Add("職位", item.Title);yield return newCompanyPrepareds;}}最后再說(shuō)一下我為什么推薦Minexcel的原因:
這里我開(kāi)個(gè)小小的車(chē),
npoi就相當(dāng)于半老徐娘, minixecel就相當(dāng)于18歲的姑娘
且npoi有的我們的miniexcel都有,如果有這兩個(gè)姑娘讓你選擇,我現(xiàn)在大家都會(huì)選擇miniexcel吧
最后我希望所有neter關(guān)注前沿技術(shù),不要故步自封。
最后大家如果喜歡我的文章,還麻煩給個(gè)關(guān)注, 希望net生態(tài)圈越來(lái)越好!
總結(jié)
以上是生活随笔為你收集整理的C#不要再使用Npoi啦,使用MiniExcel操作Excel文件更快更高效!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 里程碑 .Net7再更新,从此彻底碾压J
- 下一篇: 【C#/.NET】.NET6中全局异常处