Magicodes.IE 2.2發布
- 2020 年 5 月 26 日
- 筆記
- Magicodes.IE 2.2發布
Magicodes.IE
導入導出通用庫,支援Dto導入導出以及動態導出,支援Excel、Word、Pdf、Csv和Html。已加入NCC開源組織。
- Github://github.com/dotnetcore/Magicodes.IE
- 碼雲(手動同步,不維護)://gitee.com/magicodes/Magicodes.IE
- 特點、詳細說明、教程、Nuget、注意事項、里程碑、FAQ、更新歷史見下文
一旦成為貢獻者,我們將會邀請您加入Magicodes.IE管理委員會的微信群,並擁有相關的投票權。
最新版本:2.2.0
2.2版本內容
2020.05.12
- 【Nuget】版本更新到2.2.0
- 【Excel模板導出】支援導出位元組
- 【文檔】Magicodes.IE Csv導入導出
- 【Excel導入導出】修復標註的添加問題
- 【導出】ASP.NET Core Web API 中使用自定義格式化程式導出Excel、Pdf、Csv等內容 #64
- 【導入導出】支援使用System.ComponentModel.DataAnnotations命名空間下的部分特性來控制導入導出 #63
2020.04.16
- 【Nuget】版本更新到2.2.0-beta9
- 【Excel模板導出】修復只存在一列時的導出 #73
- 【Excel導入】支援返回表頭和索引 #76
- 【Excel導入導入】#63
- 支援使用System.ComponentModel.DataAnnotations命名空間下的部分特性來控制導入導出,比如
- DisplayAttribute
- DisplayFormatAttribute
- DescriptionAttribute
- 封裝簡單的易於使用的單一特性,例如
- IEIgnoreAttribute(可作用於屬性、枚舉成員,可影響導入和導出)
- 支援使用System.ComponentModel.DataAnnotations命名空間下的部分特性來控制導入導出,比如
2020.04.02
-
【Nuget】版本更新到2.2.0-beta8
-
【Excel模板導出】支援圖片 #62,渲染語法如下所示:
{{Image::ImageUrl?Width=50&Height=120&Alt=404}} {{Image::ImageUrl?w=50&h=120&Alt=404}} {{Image::ImageUrl?Alt=404}}
2020.03.29
- 【Nuget】版本更新到2.2.0-beta7
- 【Excel模板導出】修復渲染問題 #51
2020.03.27
- 【Nuget】版本更新到2.2.0-beta6
- 【Excel導入導出】修復.NET Core 2.2的包引用問題 #68
2020.03.26
- 【Nuget】版本更新到2.2.0-beta4
- 【Excel多Sheet導出】修復#66,並添加單元測試
2020.03.25
2020.03.19
- 【Nuget】版本更新到2.2.0-beta2
- 【Excel導入】修復日期格式的導入Bug,支援DateTime和DateTimeOffset以及可為空類型,默認支援本地化時間格式(默認根據地區自動使用本地日期時間格式)
- 【Excel導入導出】添加單元測試ExportAndImportUseOneDto_Test,對使用同一個Dto導出並導入進行測試。Issue見 #53
2020.03.18
- 【Nuget】版本更新到2.2.0-beta1
- 【Excel導出】添加以下API:
/// <summary> /// 追加集合到當前導出程式 /// append the collection to context /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dataItems"></param> /// <returns></returns> ExcelExporter Append<T>(ICollection<T> dataItems) where T : class; /// <summary> /// 導出所有的追加數據 /// export excel after append all collectioins /// </summary> /// <param name="fileName"></param> /// <returns></returns> Task<ExportFileInfo> ExportAppendData(string fileName); /// <summary> /// 導出所有的追加數據 /// export excel after append all collectioins /// </summary> /// <param name="fileName"></param> /// <returns></returns> Task<byte[]> ExportAppendDataAsByteArray();
- 【Excel導出】支援多個實體導出多個Sheet,感謝@ccccccmd 的貢獻 #pr52 ,Issue見 #50。使用程式碼參考,具體見單元測試(ExportMutiCollection_Test):
var exporter = new ExcelExporter();
var list1 = GenFu.GenFu.ListOf<ExportTestDataWithAttrs>();
var list2 = GenFu.GenFu.ListOf<ExportTestDataWithSplitSheet>(30);
var result = exporter.Append(list1).Append(list2).ExportAppendData(filePath);
瘋狂的徽章
//dev.azure.com/xinlaiopencode/Magicodes.IE/_build?definitionId=4&_a=summary
里程碑
# | 狀態 | 完成時間 | 里程碑情況 |
---|---|---|---|
3.0 | 🚢規劃中 | 2020-12-31 | 待辦 |
2.2 | ☕進行中#46 | 2020-04-31 | 待辦 已完成 |
2.1 | 🚩已完成 | 2020-03-15 | 已完成 |
Nuget
名稱 | Nuget |
---|---|
Magicodes.IE.Core | |
Magicodes.IE.Excel | |
Magicodes.IE.Pdf | |
Magicodes.IE.Word | |
Magicodes.IE.Html | |
Magicodes.IE.Csv | |
Magicodes.IE.AspNetCore |
Magicodes Nuget包推薦
名稱 | 說明 | Nuget | GitHUb |
---|---|---|---|
Magicodes.WeChat.MiniProgram | 小程式SDK | Magicodes.WxMiniProgram.Sdk | |
Magicodes.Sms.Aliyun | 阿里雲簡訊 | xin-lai/Magicodes.Sms | |
Magicodes.Sms.Core | 簡訊核心庫 | xin-lai/Magicodes.Sms | |
Magicodes.Sms.Aliyun.Abp | 阿里雲簡訊Abp模組 | xin-lai/Magicodes.Sms | |
Magicodes.Storage.Core | 通用存儲核心庫 | xin-lai/Magicodes.Storage | |
Magicodes.Storage.AliyunOss.Core | 阿里雲OSS存儲 | xin-lai/Magicodes.Storage | |
Magicodes.Storage.Local.Core | 本地存儲 | xin-lai/Magicodes.Storage | |
Magicodes.Storage.Tencent.Core | 騰訊雲存儲 | xin-lai/Magicodes.Storage | |
Magicodes.Storage.Abp.Core | 通用存儲ABP模組集成 | xin-lai/Magicodes.Storage | |
Magicodes.WeChat.SDK.Core | 微信SDK | xin-lai/Magicodes.WeChat.SDK | |
Magicodes.SwaggerUI | SwaggerUI API快速配置和分組 | xin-lai/Magicodes.SwaggerUI | |
Magicodes.Pay.Alipay | 支付寶支付庫 | xin-lai/Magicodes.Pay | |
Magicodes.Pay.Notify | 支付通用回調庫 | xin-lai/Magicodes.Pay | |
Magicodes.Pay.Wxpay | 微信支付庫 | xin-lai/Magicodes.Pay | |
Magicodes.Pay.Alipay.Global | 國際支付寶支付庫 | xin-lai/Magicodes.Pay | |
Magicodes.Pay.Allinpay | 通聯支付庫 | xin-lai/Magicodes.Pay | |
Magicodes.Pay.Abp | ABP 支付通用封裝庫 | xin-lai/Magicodes.Pay | |
Magicodes.Pay.Abp.Allinpay | ABP 通聯支付模組 | xin-lai/Magicodes.Pay | |
Magicodes.Pay.Abp.Wxpay | ABP 微信支付模組 | xin-lai/Magicodes.Pay | |
Magicodes.Pay.Alipay.Global | ABP 國際支付寶模組 | xin-lai/Magicodes.Pay | |
Magicodes.Pay.Alipay | ABP 支付寶模組 | xin-lai/Magicodes.Pay | |
Magicodes.Abp.Castle.NLog | ABP Nlog支援模組 | xin-lai/Abp.Castle.NLog | |
Magicodes.WxMiniProgram.Sdk | 微信小程式SDK | xin-lai/Magicodes.WxMiniProgram.Sdk | |
Magicodes.WxMiniProgram.Sdk.Abp | 微信小程式SDK Abp模組 | xin-lai/Magicodes.WxMiniProgram.Sdk | |
Magicodes.Dingtalk.SDK | 釘釘SDK | xin-lai/Magicodes.Dingtalk.SDK | |
Magicodes.DynamicSqlApi.Core | 根據SQL自動解析生成動態API | Magicodes.DynamicSqlApi | |
Magicodes.DynamicSqlApi.All | 根據SQL自動解析生成動態API | Magicodes.DynamicSqlApi | |
Magicodes.DynamicSqlApi.CsScript | 根據SQL自動解析生成動態API | Magicodes.DynamicSqlApi | |
Magicodes.DynamicSqlApi.Dapper | 根據SQL自動解析生成動態API | Magicodes.DynamicSqlApi | |
Magicodes.DynamicSqlApi.SqlServer | 根據SQL自動解析生成動態API | Magicodes.DynamicSqlApi |
注意
- Excel導入不支援「.xls」文件,即不支援Excel97-2003。
- 如需在Docker中使用,請參閱文檔中的《Docker中使用》一節。
- 相關功能均已編寫單元測試,在使用的過程中可以參考單元測試。
教程
-
動態導出(待補充)
-
多Sheet導入(待補充)
-
進階篇之導入導出篩選器(待補充)
-
Excel導出多個實體(待補充)
其他教程見下文或單元測試
更新歷史見下文。
特點
- 需配合相關導入導出的DTO模型使用,支援通過DTO以及相關特性控制導入導出。配置特性即可控制相關邏輯和顯示結果,無需修改邏輯程式碼;
- 支援各種篩選器,以便支援多語言、動態控制列展示等場景,具體使用見單元測試:
- 導入列頭篩選器(可動態指定導入列、導入的值映射關係)
- 導出列頭篩選器(可動態控制導出列,支援動態導出(DataTable))
- 導入結果篩選器(可修改標註文件)
- 導出支援文本自定義過濾或處理;
- 導入支援中間空行自動跳過;
- 導入支援自動根據 DTO 生成導入模板,針對必填項將自動標註;
- 導入支援數據下拉選擇,目前僅支援枚舉類型;
- 導入數據支援前後空格以及中間空格處理,允許指定列進行設置;
- 導入支援模板自動檢查,數據自動校驗,異常統一處理,並提供統一的錯誤封裝,包含異常、模板錯誤和行數據錯誤;
- 支援導入表頭位置設置,默認為1;
- 支援導入列亂序,無需按順序一一對應;
- 支援導入指定列索引,默認自動識別;
- 導出Excel支援拆分Sheet,僅需設置特性【ExporterAttribute】的【MaxRowNumberOnASheet】的值,為0則不拆分。具體見單元測試;
- 支援將導入Excel進行錯誤標註;
- 導入支援截止列設置,如未設置則默認遇到空格截止;
- 支援導出HTML、Word、Pdf,支援自定義導出模板;
- 導出HTML
- 導出Word
- 導出HTML
- 導出Pdf,支援設置,具體見更新日誌
- 導出收據
- 導入支援重複驗證;
- 支援單個數據模板導出,常用於導出收據、憑據等業務
- 支援動態列導出(基於DataTable),並且超過100W將自動拆分Sheet。(感謝張善友老師(//github.com/xin-lai/Magicodes.IE/pull/8 ))
- 支援值映射,支援通過「ValueMappingAttribute」特性設置值映射關係。用於生成導入模板的數據驗證約束以及進行數據轉換。
/// <summary> /// 性別 /// </summary> [ImporterHeader(Name = "性別")] [Required(ErrorMessage = "性別不能為空")] [ValueMapping(text: "男", 0)] [ValueMapping(text: "女", 1)] public Genders Gender { get; set; }
-
支援枚舉和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模板導出,並且支援圖片渲染
渲染語法如下所示:
{{Company}} //單元格渲染 {{Table>>BookInfos|RowNo}} //表格渲染開始語法 {{Remark|>>Table}}//表格渲染結束語法 {{Image::ImageUrl?Width=50&Height=120&Alt=404}} //圖片渲染 {{Image::ImageUrl?w=50&h=120&Alt=404}} //圖片渲染 {{Image::ImageUrl?Alt=404}} //圖片渲染
後續將支援自定義管道。
- 支援Excel導入模板生成標註
-
支援Excel圖片導入導出
- 圖片導入
- 導入為Base64
- 導入到臨時目錄
- 導入到指定目錄
- 圖片導出
- 將文件路徑導出為圖片
- 將網路路徑導出為圖片
- 圖片導入
-
支援多個實體導出多個Sheet
-
支援使用System.ComponentModel.DataAnnotations命名空間下的部分特性來控制導入導出#63
-
支援在ASP.NET Core Web API 中使用自定義格式化程式導出Excel、Pdf、Csv等內容#64
FAQ
//github.com/dotnetcore/Magicodes.IE/issues?q=label%3Aquestion
其他開源庫