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