Magicodes.IE 2.2里程碑需求和建议征集
簡(jiǎn)介
Magicodes.IE是導(dǎo)入導(dǎo)出通用庫(kù),支持Dto導(dǎo)入導(dǎo)出以及動(dòng)態(tài)導(dǎo)出,支持Excel、Word、Pdf、Csv和Html。已加入NCC開(kāi)源組織。
Magicodes.IE 2.0發(fā)布
Github:
https://github.com/dotnetcore/Magicodes.IE
碼云(手動(dòng)同步,不維護(hù)):
https://gitee.com/magicodes/Magicodes.IE
當(dāng)前狀態(tài)如下所示:
Magicodes.IE是一個(gè)長(zhǎng)期的項(xiàng)目,為了更好的支持和維護(hù)此項(xiàng)目,我們成立了Magicodes.IE開(kāi)源管理委員會(huì),委員會(huì)成員擁有相關(guān)里程碑功能開(kāi)發(fā)的投票權(quán)。我們非常期待也非常需要您的加入。
當(dāng)前里程碑狀態(tài)如下所示:
為了更好的根據(jù)實(shí)際功能來(lái)迭代,從2.2的里程碑規(guī)劃開(kāi)始,我們將結(jié)合社區(qū)的建議和意見(jiàn)來(lái)進(jìn)行迭代,您可以點(diǎn)此鏈接來(lái)提交您的意見(jiàn)和建議:
https://github.com/dotnetcore/Magicodes.IE/issues/46
Magicodes.IE主體功能介紹
需配合相關(guān)導(dǎo)入導(dǎo)出的DTO模型使用,支持通過(guò)DTO以及相關(guān)特性控制導(dǎo)入導(dǎo)出。配置特性即可控制相關(guān)邏輯和顯示結(jié)果,無(wú)需修改邏輯代碼;?
支持各種篩選器,以便支持多語(yǔ)言、動(dòng)態(tài)控制列展示等場(chǎng)景,具體使用見(jiàn)單元測(cè)試:
導(dǎo)入列頭篩選器(可動(dòng)態(tài)指定導(dǎo)入列、導(dǎo)入的值映射關(guān)系)
導(dǎo)出列頭篩選器(可動(dòng)態(tài)控制導(dǎo)出列,支持動(dòng)態(tài)導(dǎo)出(DataTable))
導(dǎo)入結(jié)果篩選器(可修改標(biāo)注文件)
導(dǎo)出支持文本自定義過(guò)濾或處理;
導(dǎo)入支持中間空行自動(dòng)跳過(guò);
導(dǎo)入支持自動(dòng)根據(jù) DTO 生成導(dǎo)入模板,針對(duì)必填項(xiàng)將自動(dòng)標(biāo)注;?
導(dǎo)入支持?jǐn)?shù)據(jù)下拉選擇,目前僅支持枚舉類型;
導(dǎo)入數(shù)據(jù)支持前后空格以及中間空格處理,允許指定列進(jìn)行設(shè)置;
導(dǎo)入支持模板自動(dòng)檢查,數(shù)據(jù)自動(dòng)校驗(yàn),異常統(tǒng)一處理,并提供統(tǒng)一的錯(cuò)誤封裝,包含異常、模板錯(cuò)誤和行數(shù)據(jù)錯(cuò)誤;?
支持導(dǎo)入表頭位置設(shè)置,默認(rèn)為1;
支持導(dǎo)入列亂序,無(wú)需按順序一一對(duì)應(yīng);
支持導(dǎo)入指定列索引,默認(rèn)自動(dòng)識(shí)別;
導(dǎo)出Excel支持拆分Sheet,僅需設(shè)置特性【ExporterAttribute】的【MaxRowNumberOnASheet】的值,為0則不拆分。具體見(jiàn)單元測(cè)試;
支持將導(dǎo)入Excel進(jìn)行錯(cuò)誤標(biāo)注;??
導(dǎo)入支持截止列設(shè)置,如未設(shè)置則默認(rèn)遇到空格截止;
支持導(dǎo)出HTML、Word、Pdf,支持自定義導(dǎo)出模板;
導(dǎo)出HTML?
導(dǎo)出Word?
導(dǎo)出Pdf,支持設(shè)置,具體見(jiàn)更新日志?
導(dǎo)出收據(jù)?
導(dǎo)入支持重復(fù)驗(yàn)證;?
支持單個(gè)數(shù)據(jù)模板導(dǎo)出,常用于導(dǎo)出收據(jù)、憑據(jù)等業(yè)務(wù)
支持動(dòng)態(tài)列導(dǎo)出(基于DataTable),并且超過(guò)100W將自動(dòng)拆分Sheet。(感謝張善友老師(https://github.com/xin-lai/Magicodes.IE/pull/8 ))
支持值映射,支持通過(guò)“ValueMappingAttribute”特性設(shè)置值映射關(guān)系。用于生成導(dǎo)入模板的數(shù)據(jù)驗(yàn)證約束以及進(jìn)行數(shù)據(jù)轉(zhuǎn)換。
支持枚舉和Bool類型的導(dǎo)入數(shù)據(jù)驗(yàn)證項(xiàng)的生成,以及相關(guān)數(shù)據(jù)轉(zhuǎn)換
枚舉默認(rèn)情況下會(huì)自動(dòng)獲取枚舉的描述、顯示名、名稱和值生成數(shù)據(jù)項(xiàng)
/// <summary>/// 學(xué)生狀態(tài) 正常、流失、休學(xué)、勤工儉學(xué)、頂崗實(shí)習(xí)、畢業(yè)、參軍/// </summary>public enum StudentStatus{/// <summary>/// 正常/// </summary>[Display(Name = "正常")]Normal = 0,/// <summary>/// 流失/// </summary>[Description("流水")]PupilsAway = 1,/// <summary>/// 休學(xué)/// </summary>[Display(Name = "休學(xué)")]Suspension = 2,/// <summary>/// 勤工儉學(xué)/// </summary>[Display(Name = "勤工儉學(xué)")]WorkStudy = 3,/// <summary>/// 頂崗實(shí)習(xí)/// </summary>[Display(Name = "頂崗實(shí)習(xí)")]PostPractice = 4,/// <summary>/// 畢業(yè)/// </summary>[Display(Name = "畢業(yè)")]Graduation = 5,/// <summary>/// 參軍/// </summary>[Display(Name = "參軍")]JoinTheArmy = 6,}bool類型默認(rèn)會(huì)生成“是”和“否”的數(shù)據(jù)項(xiàng)
如果已設(shè)置自定義值映射,則不會(huì)生成默認(rèn)選項(xiàng)
支持excel多Sheet導(dǎo)入
支持Excel模板導(dǎo)出?
支持Excel導(dǎo)入模板生成標(biāo)注?
更新歷史
2019.03.06
【Nuget】版本更新到2.1.3
【Excel導(dǎo)入】修復(fù)GUID類型的問(wèn)題。問(wèn)題見(jiàn)(https://github.com/dotnetcore/Magicodes.IE/issues/44)。
2019.02.25
【Nuget】版本更新到2.1.2
【導(dǎo)入導(dǎo)出】已支持CSV
【文檔】完善Pdf導(dǎo)出文檔
2019.02.24
【Nuget】版本更新到2.1.1-beta
【導(dǎo)入】Excel導(dǎo)入支持導(dǎo)入標(biāo)注,僅需設(shè)置ExcelImporterAttribute的ImportDescription屬性,即會(huì)在頂部生成Excel導(dǎo)入說(shuō)明
【重構(gòu)】添加兩個(gè)接口
IExcelExporter:繼承自IExporter, IExportFileByTemplate,Excel特有的API將在此補(bǔ)充
IExcelImporter:繼承自IImporter,Excel特有的API在此補(bǔ)充,例如“ImportMultipleSheet”、“ImportSameSheets”
【重構(gòu)】增加實(shí)例依賴注入
【構(gòu)建】完成代碼覆蓋率的DevOps的配置
2019.02.14
【Nuget】版本更新到2.1.0
【導(dǎo)出】PDF導(dǎo)出支持.NET 4.6.1,具體見(jiàn)單元測(cè)試
2019.02.13
【Nuget】版本更新到2.0.2
【導(dǎo)入】修復(fù)單列導(dǎo)入的Bug,單元測(cè)試“OneColumnImporter_Test”。問(wèn)題見(jiàn)(https://github.com/dotnetcore/Magicodes.IE/issues/35)。
【導(dǎo)出】修復(fù)導(dǎo)出HTML、Pdf、Word時(shí),模板在某些情況下編譯報(bào)錯(cuò)的問(wèn)題。
【導(dǎo)入】重寫(xiě)空行檢查。
2019.02.11
【Nuget】版本更新到2.0.0
【導(dǎo)出】Excel模板導(dǎo)出修復(fù)多個(gè)Table渲染以及合并單元格渲染的問(wèn)題,具體見(jiàn)單元測(cè)試“ExportByTemplate_Test1”。問(wèn)題見(jiàn)(https://github.com/dotnetcore/Magicodes.IE/issues/34)。
【導(dǎo)出】完善模板導(dǎo)出的單元測(cè)試,針對(duì)導(dǎo)出結(jié)果添加渲染檢查,確保所有單元格均已渲染。
2019.02.05
【Nuget】版本更新到2.0.0-beta4
【導(dǎo)入】支持列篩選器(需實(shí)現(xiàn)接口【IImportHeaderFilter】),可用于兼容多語(yǔ)言導(dǎo)入等場(chǎng)景,具體見(jiàn)單元測(cè)試【ImportHeaderFilter_Test】
【導(dǎo)入】支持傳入標(biāo)注文件路徑,不傳參則默認(rèn)同目錄"_"后綴保存
【導(dǎo)入】完善單元測(cè)試【ImportResultFilter_Test】
【其他】修改【ValueMappingAttribute】的命名空間為Magicodes.ExporterAndImporter.Core
2019.02.04
【Nuget】版本更新到2.0.0-beta2
【導(dǎo)入】支持導(dǎo)入結(jié)果篩選器——IImportResultFilter,可用于多語(yǔ)言場(chǎng)景的錯(cuò)誤標(biāo)注,具體使用見(jiàn)單元測(cè)試【ImportResultFilter_Test】
【其他】修改IExporterHeaderFilter的命名空間為Magicodes.ExporterAndImporter.Core.Filters
2019.01.18
【Nuget】版本更新到2.0.0-beta1
【導(dǎo)出】完全重構(gòu)整個(gè)導(dǎo)出Excel模塊并且重寫(xiě)大部分接口
【導(dǎo)出】支持列頭篩選器——IExporterHeaderFilter,具體使用見(jiàn)單元測(cè)試
【導(dǎo)出】修復(fù)轉(zhuǎn)換DataTable時(shí)支持為空類型
【導(dǎo)出】導(dǎo)出Excel支持拆分Sheet,僅需設(shè)置特性【ExporterAttribute】的【MaxRowNumberOnASheet】的值,為0則不拆分。具體見(jiàn)單元測(cè)試
【導(dǎo)出】修復(fù)導(dǎo)出結(jié)果無(wú)法篩選的問(wèn)題。目前導(dǎo)出即為數(shù)據(jù)表
【導(dǎo)出】添加擴(kuò)展方法ToExcelExportFileInfo
【導(dǎo)出】IExporter再添加兩個(gè)動(dòng)態(tài)DataTable導(dǎo)出方法,無(wú)需定義Dto即可動(dòng)態(tài)導(dǎo)出數(shù)據(jù),并且支持表頭篩選器、Sheet拆分
2019.01.16
【Nuget】版本更新到1.4.25
【導(dǎo)出】修復(fù)沒(méi)有定義導(dǎo)出特性會(huì)報(bào)錯(cuò)的情形,具體見(jiàn)單元測(cè)試“ExportTestDataWithoutExcelExporter_Test”。問(wèn)題見(jiàn)(https://github.com/dotnetcore/Magicodes.IE/issues/21)。
2019.01.16
【Nuget】版本更新到1.4.24
【導(dǎo)出】修復(fù)日期格式默認(rèn)導(dǎo)出數(shù)字的Bug,默認(rèn)輸出“yyyy-MM-dd”,可以通過(guò)設(shè)置“[ExporterHeader(DisplayName = "日期2", Format = "yyyy-MM-dd HH:mm:ss")]”來(lái)修改。問(wèn)題見(jiàn)(https://github.com/dotnetcore/Magicodes.IE/issues/22)。
2019.01.14
【Nuget】版本更新到1.4.21
【導(dǎo)出】Excel模板導(dǎo)出修復(fù)數(shù)據(jù)項(xiàng)為Null報(bào)錯(cuò)的Bug。
2019.01.09
【Nuget】版本更新到1.4.20
【導(dǎo)出】Excel模板導(dǎo)出性能優(yōu)化。5000條表格數(shù)據(jù)1秒內(nèi)完成,具體見(jiàn)單元測(cè)試ExportByTemplate_Large_Test。
2019.01.08
【Nuget】版本更新到1.4.18
【導(dǎo)入】支持導(dǎo)入最大數(shù)量限制
ImporterAttribute支持MaxCount設(shè)置,默認(rèn)為50000
完成相關(guān)單元測(cè)試
2019.01.07
【Nuget】版本更新到1.4.17
【重構(gòu)】重構(gòu)IExportFileByTemplate中的ExportByTemplate,將參數(shù)htmlTemplate改為template。以便支持Excel模板導(dǎo)出。
【導(dǎo)出】支持Excel模板導(dǎo)出并填寫(xiě)相關(guān)單元測(cè)試,如何使用見(jiàn)教程《Excel模板導(dǎo)出之導(dǎo)出教材訂購(gòu)表》
支持單元格單個(gè)綁定
支持列表
2019.12.17
【Nuget】版本更新到1.4.16
【導(dǎo)入】Excel導(dǎo)入支持多sheet導(dǎo)入,感謝tanyongzheng(https://github.com/dotnetcore/Magicodes.IE/pull/18)
2019.12.10
【Nuget】版本更新到1.4.15
【測(cè)試】單元測(cè)試添加多框架版本支持 (https://docs.xin-lai.com/2019/12/10/%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3/Magicodes.IE%E7%BC%96%E5%86%99%E5%A4%9A%E6%A1%86%E6%9E%B6%E7%89%88%E6%9C%AC%E6%94%AF%E6%8C%81%E5%92%8C%E6%89%A7%E8%A1%8C%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/)
【修復(fù)】修復(fù)部分.NET Framework 461下的問(wèn)題
2019.12.06
【Nuget】版本更新到1.4.14
【重構(gòu)】大量重構(gòu)
移除部分未使用的代碼
將TemplateFileInfo重命名為ExportFileInfo
將IExporterByTemplate接口拆分為4個(gè)接口:IExportListFileByTemplate, IExportListStringByTemplate, IExportStringByTemplate, IExportFileByTemplate,并修改相關(guān)實(shí)現(xiàn)
重構(gòu)ImportHelper部分代碼
【導(dǎo)入】修復(fù)導(dǎo)入Excel時(shí)表頭設(shè)置的問(wèn)題,已對(duì)此編寫(xiě)單元測(cè)試,見(jiàn)【產(chǎn)品信息導(dǎo)入】
【完善】編寫(xiě)ExportAsByteArray對(duì)于DataTable的單元測(cè)試,ExportWordFileByTemplate_Test
2019.11.25
【Nuget】版本更新到1.4.13
【導(dǎo)出】Pdf導(dǎo)出支持特性配置,詳見(jiàn)單元測(cè)試【導(dǎo)出豎向排版收據(jù)】。目前主要支持以下設(shè)置:
Orientation:排版方向(橫排、豎排)
PaperKind:紙張類型,默認(rèn)A4
IsEnablePagesCount:是否啟用分頁(yè)數(shù)
Encoding:編碼設(shè)置,默認(rèn)UTF8
IsWriteHtml:是否輸出HTML模板,如果啟用,則會(huì)輸出.html后綴的對(duì)應(yīng)的HTML文件,方便調(diào)錯(cuò)
HeaderSettings:頭部設(shè)置,通常可以設(shè)置頭部的分頁(yè)內(nèi)容和信息
FooterSettings:底部設(shè)置
2019.11.24
【Nuget】版本更新到1.4.12
【導(dǎo)出】導(dǎo)出動(dòng)態(tài)類支持超過(guò)100W數(shù)據(jù)時(shí)自動(dòng)拆分Sheet(具體見(jiàn)PR:https://github.com/xin-lai/Magicodes.IE/pull/14)
2019.11.20
【Nuget】版本更新到1.4.11
【導(dǎo)出】修復(fù)Datatable列的順序和DTO的順序不一致,導(dǎo)致數(shù)據(jù)放錯(cuò)列(具體見(jiàn)PR:https://github.com/xin-lai/Magicodes.IE/pull/13)
2019.11.16
【Nuget】版本更新到1.4.10
【導(dǎo)出】修復(fù)Pdf導(dǎo)出在多線程下的問(wèn)題
2019.11.13
【Nuget】版本更新到1.4.5
【導(dǎo)出】修復(fù)導(dǎo)出Pdf在某些情況下可能會(huì)導(dǎo)致內(nèi)存報(bào)錯(cuò)的問(wèn)題
【導(dǎo)出】添加批量導(dǎo)出收據(jù)單元測(cè)試示例,并添加大量數(shù)據(jù)樣本進(jìn)行測(cè)試
2019.11.5
【Nuget】版本更新到1.4.4
【導(dǎo)入】修復(fù)枚舉類型的問(wèn)題,并編寫(xiě)單元測(cè)試
【導(dǎo)入】增加值映射,支持通過(guò)“ValueMappingAttribute”特性設(shè)置值映射關(guān)系。用于生成導(dǎo)入模板的數(shù)據(jù)驗(yàn)證約束以及進(jìn)行數(shù)據(jù)轉(zhuǎn)換。
【導(dǎo)入】?jī)?yōu)化枚舉和Bool類型的導(dǎo)入數(shù)據(jù)驗(yàn)證項(xiàng)的生成,以便于模板生成和數(shù)據(jù)轉(zhuǎn)換
枚舉默認(rèn)情況下會(huì)自動(dòng)獲取枚舉的描述、顯示名、名稱和值生成數(shù)據(jù)項(xiàng)
bool類型默認(rèn)會(huì)生成“是”和“否”的數(shù)據(jù)項(xiàng)
如果已設(shè)置自定義值映射,則不會(huì)生成默認(rèn)選項(xiàng)
【導(dǎo)入】支持枚舉可為空類型
2019.10.30
【Nuget】版本更新到1.4.0
【導(dǎo)出】Excel導(dǎo)出支持動(dòng)態(tài)列導(dǎo)出(基于DataTable),感謝張善友(https://github.com/xin-lai/Magicodes.IE/pull/8?)
2019.10.22
【Nuget】版本更新到1.3.7
【導(dǎo)入】修復(fù)忽略列的驗(yàn)證問(wèn)題
【導(dǎo)入】修正驗(yàn)證錯(cuò)誤信息,一行僅允許存在一條數(shù)據(jù)
【導(dǎo)入】修復(fù)忽略列在某些情況下可能引發(fā)的異常
【導(dǎo)入】添加存在忽略列的導(dǎo)入情形下的單元測(cè)試
2019.10.21
【Nuget】版本更新到1.3.4
【導(dǎo)入】支持設(shè)置忽略列,以便于在Dto定義數(shù)據(jù)列做處理或映射
2019.10.18
【優(yōu)化】?jī)?yōu)化.NET標(biāo)準(zhǔn)庫(kù)2.1下集合轉(zhuǎn)DataTable的性能
【重構(gòu)】多處IList修改為ICollection
【完善】補(bǔ)充部分單元測(cè)試
2019.10.12
【重構(gòu)】重構(gòu)HTML、PDF導(dǎo)出等邏輯,并修改IExporterByTemplate為:
Task ExportListByTemplate(IList dataItems, string htmlTemplate = null) where T : class;
Task ExportByTemplate(T data, string htmlTemplate = null) where T : class;
【示例】添加收據(jù)導(dǎo)出的單元測(cè)試示例
2019.9.28
【導(dǎo)出】修改默認(rèn)的導(dǎo)出HTML、Word、Pdf模板
【導(dǎo)入】添加截?cái)嘈械膯卧獪y(cè)試,以測(cè)試中間空格和結(jié)尾空格
【導(dǎo)入】將【數(shù)據(jù)錯(cuò)誤檢測(cè)】和【導(dǎo)入】單元測(cè)試的Dto分開(kāi),確保全部單元測(cè)試通過(guò)
【文檔】更新文檔
2019.9.26
【導(dǎo)出】支持導(dǎo)出Word、Pdf、HTML,支持自定義導(dǎo)出模板
【導(dǎo)出】添加相關(guān)導(dǎo)出的單元測(cè)試
【導(dǎo)入】支持重復(fù)驗(yàn)證,需設(shè)置ImporterHeader特性的IsAllowRepeat為false
2019.9.19
【導(dǎo)入】支持截止列設(shè)置,如未設(shè)置則默認(rèn)遇到空格截止
【導(dǎo)入】導(dǎo)入支持通過(guò)特性設(shè)置Sheet名稱
2019.9.18
【導(dǎo)入】重構(gòu)導(dǎo)入模塊
【導(dǎo)入】統(tǒng)一導(dǎo)入錯(cuò)誤消息
Exception :導(dǎo)入異常信息
RowErrors :數(shù)據(jù)錯(cuò)誤信息
TemplateErrors :模板錯(cuò)誤信息,支持錯(cuò)誤分級(jí)
HasError : 是否存在錯(cuò)誤(僅當(dāng)出現(xiàn)異常并且錯(cuò)誤等級(jí)為Error時(shí)返回true)
【導(dǎo)入】基礎(chǔ)類型必填自動(dòng)識(shí)別,比如int、double等不可為空類型自動(dòng)識(shí)別,無(wú)需額外設(shè)置Required
【導(dǎo)入】修改Excel模板的Sheet名稱
【導(dǎo)入】支持導(dǎo)入表頭位置設(shè)置,默認(rèn)為1
【導(dǎo)入】支持列亂序(導(dǎo)入模板的列序號(hào)不再需要固定)
【導(dǎo)入】支持列索引設(shè)置
【導(dǎo)入】支持將導(dǎo)入的Excel進(jìn)行錯(cuò)誤標(biāo)注,支持多個(gè)錯(cuò)誤
【導(dǎo)入】加強(qiáng)對(duì)基礎(chǔ)類型和可為空類型的支持
【EPPlus】由于EPPlus.Core已經(jīng)不維護(hù),將EPPlus的包從EPPlus.Core改為EPPlus
2019.9.11
【導(dǎo)入】導(dǎo)入支持自動(dòng)去除前后空格,默認(rèn)啟用,可以針對(duì)列進(jìn)行關(guān)閉,具體見(jiàn)AutoTrim設(shè)置
【導(dǎo)入】導(dǎo)入Dto的字段允許不設(shè)置ImporterHeader,支持通過(guò)DisplayAttribute特性獲取列名
【導(dǎo)入】導(dǎo)入的Excel移除對(duì)Sheet名稱的約束,默認(rèn)獲取第一個(gè)Sheet
【導(dǎo)入】導(dǎo)入增加對(duì)中間空格的處理支持,需設(shè)置FixAllSpace
【導(dǎo)入】導(dǎo)入完善對(duì)日期類型的支持
【導(dǎo)入】完善導(dǎo)入的單元測(cè)試
轉(zhuǎn)載是一種動(dòng)力 分享是一種美德
作者:magiccodes
如果喜歡作者的文章,請(qǐng)關(guān)注【麥扣聊技術(shù)】訂閱號(hào)以便第一時(shí)間獲得最新內(nèi)容。本文版權(quán)歸作者和湖南心萊信息科技有限公司共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
文檔官網(wǎng):docs.xin-lai.com
QQ群:
編程交流群<85318032>?
產(chǎn)品交流群<897857351>
總結(jié)
以上是生活随笔為你收集整理的Magicodes.IE 2.2里程碑需求和建议征集的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 程序员过关斩将--从每秒6000写请求谈
- 下一篇: 什么样的女生适合学计算机?