Magicodes.IE 2.2發布

Magicodes.IE

導入導出通用庫,支援Dto導入導出以及動態導出,支援Excel、Word、Pdf、Csv和Html。已加入NCC開源組織。

Magicodes.IE 2.0發布

Magicodes.IE 2.1發布

如何做好一個開源項目(一)

一旦成為貢獻者,我們將會邀請您加入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(可作用於屬性、枚舉成員,可影響導入和導出)

 

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

 

  • 【Nuget】版本更新到2.2.0-beta3
  • 【Excel導入】修復日期問題 #68
  • 【Excel導出】添加ExcelOutputType設置,支援輸出無格式的導出。#54可以使用此方式。

 

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 NuGet
Magicodes.IE.Excel NuGet
Magicodes.IE.Pdf NuGet
Magicodes.IE.Word NuGet
Magicodes.IE.Html NuGet
Magicodes.IE.Csv NuGet
Magicodes.IE.AspNetCore NuGet

Magicodes Nuget包推薦

名稱 說明 Nuget GitHUb
Magicodes.WeChat.MiniProgram 小程式SDK NuGet Magicodes.WxMiniProgram.Sdk
Magicodes.Sms.Aliyun 阿里雲簡訊 NuGet xin-lai/Magicodes.Sms
Magicodes.Sms.Core 簡訊核心庫 NuGet xin-lai/Magicodes.Sms
Magicodes.Sms.Aliyun.Abp 阿里雲簡訊Abp模組 NuGet xin-lai/Magicodes.Sms
Magicodes.Storage.Core 通用存儲核心庫 NuGet xin-lai/Magicodes.Storage
Magicodes.Storage.AliyunOss.Core 阿里雲OSS存儲 NuGet xin-lai/Magicodes.Storage
Magicodes.Storage.Local.Core 本地存儲 NuGet xin-lai/Magicodes.Storage
Magicodes.Storage.Tencent.Core 騰訊雲存儲 NuGet xin-lai/Magicodes.Storage
Magicodes.Storage.Abp.Core 通用存儲ABP模組集成 NuGet xin-lai/Magicodes.Storage
Magicodes.WeChat.SDK.Core 微信SDK NuGet xin-lai/Magicodes.WeChat.SDK
Magicodes.SwaggerUI SwaggerUI API快速配置和分組 NuGet xin-lai/Magicodes.SwaggerUI
Magicodes.Pay.Alipay 支付寶支付庫 NuGet xin-lai/Magicodes.Pay
Magicodes.Pay.Notify 支付通用回調庫 NuGet xin-lai/Magicodes.Pay
Magicodes.Pay.Wxpay 微信支付庫 NuGet xin-lai/Magicodes.Pay
Magicodes.Pay.Alipay.Global 國際支付寶支付庫 NuGet xin-lai/Magicodes.Pay
Magicodes.Pay.Allinpay 通聯支付庫 NuGet xin-lai/Magicodes.Pay
Magicodes.Pay.Abp ABP 支付通用封裝庫 NuGet xin-lai/Magicodes.Pay
Magicodes.Pay.Abp.Allinpay ABP 通聯支付模組 NuGet xin-lai/Magicodes.Pay
Magicodes.Pay.Abp.Wxpay ABP 微信支付模組 NuGet xin-lai/Magicodes.Pay
Magicodes.Pay.Alipay.Global ABP 國際支付寶模組 NuGet xin-lai/Magicodes.Pay
Magicodes.Pay.Alipay ABP 支付寶模組 NuGet xin-lai/Magicodes.Pay
Magicodes.Abp.Castle.NLog ABP Nlog支援模組 NuGet xin-lai/Abp.Castle.NLog
Magicodes.WxMiniProgram.Sdk 微信小程式SDK NuGet xin-lai/Magicodes.WxMiniProgram.Sdk
Magicodes.WxMiniProgram.Sdk.Abp 微信小程式SDK Abp模組 NuGet xin-lai/Magicodes.WxMiniProgram.Sdk
Magicodes.Dingtalk.SDK 釘釘SDK NuGet xin-lai/Magicodes.Dingtalk.SDK
Magicodes.DynamicSqlApi.Core 根據SQL自動解析生成動態API NuGet Magicodes.DynamicSqlApi
Magicodes.DynamicSqlApi.All 根據SQL自動解析生成動態API NuGet Magicodes.DynamicSqlApi
Magicodes.DynamicSqlApi.CsScript 根據SQL自動解析生成動態API NuGet Magicodes.DynamicSqlApi
Magicodes.DynamicSqlApi.Dapper 根據SQL自動解析生成動態API NuGet Magicodes.DynamicSqlApi
Magicodes.DynamicSqlApi.SqlServer 根據SQL自動解析生成動態API NuGet Magicodes.DynamicSqlApi

注意

  • Excel導入不支援「.xls」文件,即不支援Excel97-2003。
  • 如需在Docker中使用,請參閱文檔中的《Docker中使用》一節。
  • 相關功能均已編寫單元測試,在使用的過程中可以參考單元測試。

教程

  1. 基礎教程之導入學生數據點此訪問中國文檔

  2. 基礎教程之導出Excel (點此訪問中國文檔)

  3. 基礎教程之導出Pdf收據 (點此訪問中國文檔)

  4. 在Docker中使用

  5. 動態導出(待補充)

  6. 多Sheet導入(待補充)

  7. Csv導入導出

  8. Excel圖片導入導出 (點此訪問中國文檔)

  9. Excel模板導出之導出教材訂購表點此訪問中國文檔

  10. 進階篇之導入導出篩選器(待補充)

  11. Excel導出多個實體(待補充)

其他教程見下文或單元測試

更新歷史見下文。

特點

總體說明

  • 需配合相關導入導出的DTO模型使用,支援通過DTO以及相關特性控制導入導出。配置特性即可控制相關邏輯和顯示結果,無需修改邏輯程式碼;
  • 支援各種篩選器,以便支援多語言、動態控制列展示等場景,具體使用見單元測試:
    • 導入列頭篩選器(可動態指定導入列、導入的值映射關係)
    • 導出列頭篩選器(可動態控制導出列,支援動態導出(DataTable))
    • 導入結果篩選器(可修改標註文件)
  • 導出支援文本自定義過濾或處理;
  • 導入支援中間空行自動跳過;
  • 導入支援自動根據 DTO 生成導入模板,針對必填項將自動標註;

  • 導入支援數據下拉選擇,目前僅支援枚舉類型;
  • 導入數據支援前後空格以及中間空格處理,允許指定列進行設置;
  • 導入支援模板自動檢查,數據自動校驗,異常統一處理,並提供統一的錯誤封裝,包含異常、模板錯誤和行數據錯誤;
  • 支援導入表頭位置設置,默認為1;
  • 支援導入列亂序,無需按順序一一對應;
  • 支援導入指定列索引,默認自動識別;
  • 導出Excel支援拆分Sheet,僅需設置特性【ExporterAttribute】的【MaxRowNumberOnASheet】的值,為0則不拆分。具體見單元測試;
  • 支援將導入Excel進行錯誤標註;
  • 導入支援截止列設置,如未設置則默認遇到空格截止;
  • 支援導出HTML、Word、Pdf,支援自定義導出模板;
    • 導出HTML
    • 導出Word

  • 導出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

其他開源庫