日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

WeihanLi.Npoi 近期更新

發(fā)布時(shí)間:2023/12/4 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WeihanLi.Npoi 近期更新 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

WeihanLi.Npoi 近期更新

Intro

最近對(duì)我的 NPOI 擴(kuò)展做了一些改變,一方面提高性能,一方面修復(fù)bug,增加一些新的功能來讓它更加好用,前幾天發(fā)布了 1.5.0 版本,下面來介紹一下最近的更新

默認(rèn)導(dǎo)入/導(dǎo)出格式變更

在 1.5.0 版本中,將默認(rèn)導(dǎo)入/導(dǎo)出的excel格式從 xlsx 改為 xls 以獲得更好的性能,需要注意的是 xls 格式的 excel 文件一個(gè) sheet 最多 65535 行數(shù)據(jù),超過的話會(huì)報(bào)錯(cuò)。xls 可以有更好的性能和更優(yōu)的內(nèi)存分配,xlsx 可能是因?yàn)橐?xlsx 保持一致的接口,一致的編程體驗(yàn)才會(huì)性能有點(diǎn)問題,建議最好使用 xls 格式的 excel

具體的性能測(cè)試可以參考 Github,這里貼幾張圖:

  • 基本測(cè)試:https://github.com/WeihanLi/WeihanLi.Npoi/blob/dev/perf/WeihanLi.Npoi.Benchmark/BenchmarkDotNet.Artifacts/results/WeihanLi.Npoi.Benchmark.WorkbookBasicTest-report-github.md

  • Excel 導(dǎo)出測(cè)試:https://github.com/WeihanLi/WeihanLi.Npoi/blob/dev/perf/WeihanLi.Npoi.Benchmark/BenchmarkDotNet.Artifacts/results/WeihanLi.Npoi.Benchmark.ExportExcelTest-report-github.md

  • Excel 導(dǎo)入測(cè)試:https://github.com/WeihanLi/WeihanLi.Npoi/blob/dev/perf/WeihanLi.Npoi.Benchmark/BenchmarkDotNet.Artifacts/results/WeihanLi.Npoi.Benchmark.ImportExcelTest-report-github.md

導(dǎo)出數(shù)據(jù)較多,截圖難以完整展示,建議看 Github 上的測(cè)試結(jié)果,或者自己拉取代碼,在自己電腦上跑測(cè)試

ColumnWidth 的變化

原來的版本,會(huì)自動(dòng)調(diào)整列寬,應(yīng)網(wǎng)友的請(qǐng)求在 1.4.0 版本中增加了 ColumnWidth 的配置來自定義列寬,issue:https://github.com/WeihanLi/WeihanLi.Npoi/issues/30

可以通過 Attribute [Column(Width=100)] 或者通過 FluentAPI HasColumnWidth(100) 來自定義列寬

同時(shí)出于導(dǎo)出性能的考慮,在 1.5.0 版本中移除了自動(dòng)列寬的配置,如果需要啟用自動(dòng)列寬,可以通過 Sheet 的配置來實(shí)現(xiàn)

  • Attribute 方式:?[Sheet(SheetIndex=0,SheetName="TestSheet",AutoColumnWidthEnabled=true)]

  • FluentAPI:?setting.HasSheetConfiguration(0,"SystemSettingsList",true)

OutputFormatter/InputFormatter

在 1.3.7 版本中引入了 ColumnFormatter 來使得用戶可以自定義導(dǎo)出,讓導(dǎo)出變得更加靈活,可以自定義一個(gè)委托來指定導(dǎo)出的值。

在 1.4.5 版本將 ColumnFormatter 變更為 OutputFormatter,并增加了 InputFormatter 來使得導(dǎo)入更加靈活

看個(gè)示例:

var setting = ExcelHelper.SettingFor<TestEntity>(); // ExcelSetting setting.HasAuthor("WeihanLi") .HasTitle("WeihanLi.Npoi test") .HasDescription("WeihanLi.Npoi test") .HasSubject("WeihanLi.Npoi test"); setting.HasSheetConfiguration(0, "SystemSettingsList", 1); // setting.HasFilter(0, 1).HasFreezePane(0, 1, 2, 1); setting.Property(_ => _.SettingId) .HasColumnIndex(0); setting.Property(_ => _.SettingName) .HasColumnTitle("SettingName") .HasColumnIndex(1); setting.Property(_ => _.DisplayName) .HasOutputFormatter((entity, displayName) => $"AAA_{entity.SettingName}_{displayName}") .HasInputFormatter((entity, originVal) => originVal.Split(new[] { '_' })[2]) .HasColumnTitle("DisplayName") .HasColumnIndex(2); setting.Property(_ => _.SettingValue) .HasColumnTitle("SettingValue") .HasColumnIndex(3); setting.Property(_ => _.CreatedTime) .HasColumnTitle("CreatedTime") .HasColumnIndex(4) .HasColumnWidth(10) .HasColumnFormatter("yyyy-MM-dd HH:mm:ss"); setting.Property(_ => _.CreatedBy) .HasColumnIndex(4) .HasColumnTitle("CreatedBy");

通過 OutputFormatter/ InputFormatter 我們可以大大提高導(dǎo)出/導(dǎo)入的靈活性,CSV 也同樣適用

小功能

  • 增加了導(dǎo)入 excel 時(shí)根據(jù)導(dǎo)入的文件內(nèi)容自動(dòng)調(diào)整列的順序,這樣即使不是嚴(yán)格按照配置的列順序定義的excel文件也可以正常的讀取

  • 增加了?ExcelHelper.LoadExcel()/?ExcelHelper.ToEntityList?Stream/?byte[]?的重載,使得用戶可以直接從上傳的文件流或者一個(gè)字節(jié)數(shù)組中獲取 excel 內(nèi)容

  • 增加了?CsvHelper.ToEntityList(byte[]bytes)/CsvHelper.ToEntityList(Streamstream)

  • 導(dǎo)出 excel 時(shí)增加 sheetIndex 參數(shù),支持按某一個(gè) sheet 導(dǎo)出,原來只能導(dǎo)出第一個(gè) sheet

  • 修復(fù)了 excel 導(dǎo)入導(dǎo)出不區(qū)分 string.Empty/null 的問題

  • 修復(fù)了一些 csv 導(dǎo)入導(dǎo)出的bug

  • 增加了對(duì)更多格式的讀取,對(duì)于下面這些格式的文件都按照 xlsx 處理,

*.xlsx:基于XML文件格式的Excel 2007工作簿缺省格式 *.xlsm:基于XML且啟用宏的Excel 2007工作簿 *.xltx:Excel2007模板格式 *.xltm:Excel 2007宏模板 *.xlam:Excel 2007宏加載項(xiàng) *.xlsb:Excel2007為大的或復(fù)雜的工作簿新引入的非XML二進(jìn)制文件格,允許優(yōu)化執(zhí)行和向后兼容。

More

可以查看 Github 上的 ReleaseNotes 來查看最近更新

更多詳情可以參考 Github 上的 PR,現(xiàn)在每一次包版本的更新都會(huì)有相應(yīng)的 PR,PR 合并之后通過 Azure Devops 自動(dòng)發(fā)布 nuget 包

希望打造一個(gè)更好的 Excel 導(dǎo)入導(dǎo)出工具,歡迎使用,歡迎給我提 issue,bug/feature 都?xì)g迎

總結(jié)

以上是生活随笔為你收集整理的WeihanLi.Npoi 近期更新的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。