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);

瘋狂的徽章

https://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。(感謝張善友老師(https://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

問題列表

https://github.com/dotnetcore/Magicodes.IE/issues?q=label%3Aquestion

其他開源庫


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM