2.7.1
2022.12.01
Magicodes.IE.EPPlus默認添加SkiaSharp.NativeAssets.Linux.NoDependencies包,以便于在Linux環境下使用
導入驗證支持將錯誤數據通過Stream的方式返回,感謝sampsonye (見pr#466)
2.7.0
2022.11.07
添加SkiaSharp
移除SixLabors.Fonts
感謝linch90的大力支持(具體見pr#462)
部分方法改為虛方法
2.7.0-beta
2022.10.27
使用SixLabors.ImageSharp替代System.Drawing,感謝linch90 (見pr#454)
2.6.9
2022.10.26
fix: 動態數據源導出到多個sheet的問題 (見#449)
2.6.8
2022.10.18
Excel模板導出添加API,以支持通過文件流模板:Task<byte[]> ExportBytesByTemplate(T data, Stream templateStream)
2.6.7
2022.10.12
ExporterHeaderFilter支持修改列索引,以支持動態排序,需設置ExporterHeaderAttribute.ColumnIndex屬性(注意不應修改Index屬性),值范圍為0~10000。設置錯誤會自動調整到相近的邊界值。
提供ExporterHeadersFilter篩選器,以支持批量修改列頭。
重構、優化列排序代碼。
2.6.5-beta1
2022.07.17
【修復】如果為動態類型導出,如datatable/dynamic/proxy等,會將原始數據轉成字符串。
fix: 修復沒有正確釋放Graphics對象的問題 (見PR#401)
feat(module: excel): Export of the byte type Enum value is allowed (見PR#367)
feat(module: excel): The export can be of Nullable Enum type (見PR#398)
fix(module: Excel): Excel ParseData
2.6.4
2022.04.17
優化了ColumnIndex在生成模板時的實現,增加了ColumnIndex的單測(見PR#385)。
添加了NPOI的獨立擴展包——Magicodes.IE.Excel.NPOI,以便于后續給用戶提供更多的支持。目前僅提供了 SaveToExcelWithXSSFWorkbook 擴展方法。
修復RequiredIfAttribute的Bug。
修復導出JPG圖片在Linux環境下可能引起的無限循環的問題(見PR#396)。
Excel圖片導入時,圖片列支持為空。
更新CsvHelper到最新版本,并修改相關代碼。
2.6.3
2022.03.06
完善篩選器注冊機制,在指定了特性ImportHeaderFilter、ExporterHeaderFilter等值后,篩選器將匹配對于的類型(見PR#384),如不指定則作為全局篩選器。如下述代碼,注入了多個同類型的篩選器,通過指定了ImportHeaderFilter限制了此Dto僅使用ImportHeaderFilterB:
builder.Services.AddTransient<IImportHeaderFilter, ImportHeaderFilterA>();builder.Services.AddTransient<IImportHeaderFilter, ImportHeaderFilterB>();builder.Services.AddTransient<IImportHeaderFilter, ImportHeaderFilterC>();[ExcelImporter(ImportHeaderFilter = typeof(ImportHeaderFilterB))]public class ImportExcelTemplateDto{[ImporterHeader(Name = "TypeName")]public string? Name { get; set; }}
2.6.2
2022.03.02
Excel導入時增加回調函數,方便增加自定義驗證(見PR#369):
[Fact(DisplayName = "導入結果回調函數測試")]public async Task ImportResultCallBack_Test(){var filePath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "Import", "繳費流水導入模板.xlsx");var import = await Importer.Import<ImportPaymentLogDto>(filePath, (importResult) =>{int rowNum = 2;//首行數據對應Excel中的行號foreach (var importPaymentLogDto in importResult.Data){if (importPaymentLogDto.Amount > 5000){var dataRowError = new DataRowErrorInfo();dataRowError.RowIndex = rowNum;dataRowError.FieldErrors.Add("Amount", "金額不能大于5000");importResult.RowErrors.Add(dataRowError);}rowNum++;}return importResult;});import.ShouldNotBeNull();import.HasError.ShouldBeTrue();import.RowErrors.ShouldContain(p => p.RowIndex == 3 && p.FieldErrors.ContainsKey("金額不能大于5000"));import.Exception.ShouldBeNull();import.Data.Count.ShouldBe(20);}
優化獲取DisplayName的邏輯(見PR#372)
導出CSV支持ColumnIndex(見PR#381)
優化Pdf導出邏輯,統一各平臺導出代碼
2.6.1
修復內存未及時回收
2.6.0
2021.11.29
添加兩個動態驗證特性(見PR#319 by Afonsof91):
public class DynamicStringLengthImportDto {[ImporterHeader(Name = "名稱")][Required(ErrorMessage = "名稱不能為空")][DynamicStringLength(typeof(DynamicStringLengthImportDtoConsts), nameof(DynamicStringLengthImportDtoConsts.MaxNameLength), ErrorMessage = "名稱字數不能超過{1}")]public string Name { get; set; } }public static class DynamicStringLengthImportDtoConsts {public static int MaxNameLength { get; set; } = 3; }
public class RequiredIfAttributeImportDto {[ImporterHeader(Name = "名稱是否必填")][Required(ErrorMessage = "名稱是否必填不能為空")][ValueMapping("是", true)][ValueMapping("否", false)]public bool IsNameRequired { get; set; }[ImporterHeader(Name = "名稱")][RequiredIf("IsNameRequired", "True", ErrorMessage = "名稱不能為空")][MaxLength(10, ErrorMessage = "名稱字數超出最大值:10")]public string Name { get; set; } }
添加特性
RequiredIfAttribute
,以支持動態開啟必填驗證。使用參考:添加特性
DynamicStringLengthAttribute
,以便支持動態配置字符串長度驗證。使用參考:
CSV添加對分隔符的配置,具體見PR#319 by Afonsof91
Excel導入添加對
TimeSpan
類型的支持,使用參考TimeSpan_Test
初步添加對.NET6的適配
2.5.6.3
2021.10.23
導出日期格式化支持DateTimeOffset類型,具體見PR#349,感謝YaChengMu
修改Magicodes.IE.EPPlus的包依賴PR#351
2.5.6.2
2021.10.13
支持自定義列字體顏色,具體見PR#342,感謝xiangxiren
修復日期格式化的問題,具體見PR#344,感謝ccccccmd
2.5.6.1
2021.10.06
修復?#337,bool?類型導出的映射問題
2.5.6.0
2021.10.05
合并Magicodes.EPPlus到Magicodes.IE,修復所有單元測試并修復部分Bug
對EPPlus進行了部分性能優化(比如使用高性能內存流代替MemoryStream)和功能加強
2.5.5.4
2021.09.02
修復可為空枚舉導入時的驗證問題#322。
2.5.5.3
2021.08.27
修復Append方式導出多個sheet時,發生“Tablename is not unique”錯誤,具體見#299。
2.5.5.2
2021.08.24
添加對Abp模塊的包裝,具體見#318。
?Magicodes.IE.Excel.Abp(
MagicodesIEExcelModule
)?注冊IExcelExporter、IExcelImporter、IExportFileByTemplate
?Magicodes.IE.Csv.Abp(
MagicodesIECsvModule
)?注冊ICsvExporter、ICsvImporter
?Magicodes.IE.Html.Abp(
MagicodesIEHtmlModule
)?注冊IHtmlExporter
?Magicodes.IE.Pdf.Abp(
MagicodesIEPdfModule
)?注冊IPdfExporter
?Magicodes.IE.Word.Abp(
MagicodesIEWordModule
)?注冊IWordExporter
如何使用?
添加包
<PackageReference Include="Magicodes.IE.Excel.Abp" Version="2.5.5.2" /><PackageReference Include="Magicodes.IE.Pdf.Abp" Version="2.5.5.2" />
添加模塊依賴
[DependsOn(typeof(MagicodesIEExcelModule),typeof(MagicodesIEPdfModule))]
通過構造函數或者其他方式注入IExcelExporter等對象,然后直接使用
2.5.5.1
2021.08.07
為了簡化ASP.NET Core下的Excel導出,對Excel導出進行了進一步的封裝
添加
Magicodes.IE.Excel.AspNetCore
工程,添加XlsxFileResult
的Action Result,支持泛型集合、Bytes數組、Steam直接導出修改部分命名和命名空間
2.5.4.9
2021.07.23
修復Excel合并行導入在存在空的合并單元格時可能的數據讀取錯誤#305
2.5.4.8
2021.07.15
Magicodes.EPPlus回退到4.6.6,以修復格式錯亂的問題
修復Excel僅導出錯誤數據時的Bug#302
完善多語言#298,以及完善單元測試
2.5.4.6
2021.07.04
模板導出支持一行多個表格#296
2.5.4.5
2021.06.29
合并PR#295,完善模板導出類型定義的問題
2.5.4.4
2021.06.25
Fix only first [ColumnIndex] is valid exception#289
2.5.4.3
2021.06.18
Update ImportTestColumnIndex_Test
Magicodes.EPPlus was upgraded to 4.6.7#285
2.5.4.2
2021.06.05
Fix ImporterHeader->ColumnIndex
Utilize RecyclableMemoryStream instead of "new MemoryStream" all over#282
2.5.4.1
2021.06.05
EXCEL模板導出支持XOffset和YOffset#280
EXCEL修復ValueMapping
Core工程多語言配置
EXCEL優化時間導出
2.5.4.0
2021.06.01
EXCEL支持自動換行屬性#278
EXCEL支持隱藏列屬性#273
EXCEL優化時間優化
2.5.3.9
2021.05.26
修復ValueMappingAttribute#272
2.5.3.8
2021.05.10
Excel模板導出功能,將單行復制改為多行復制
PDF導出內存優化
2.5.3.7
2021.04.23
修復導入模板生成,格式錯誤#261 例如:
2.5.3.6
2021.04.18
支持對導入模板生成,預設值單元格格式#253 例如:
[ImporterHeader(Name = "序號", Format ="@")]
單元格圖片導出支持偏移設置#250?例如:
**YOffset**:垂直偏移(可進行移動圖片)
**XOffset**:水平偏移(可進行移動圖片)
支持多sheet導入SheetIndex的支持#254 例如:
[ExcelImporter(SheetIndex = 2)]
2.5.3.5
2021.04.13
Excel導入支持列頭忽略大小寫導入(全局配置:IsIgnoreColumnCase)
2.5.3.4
2021.04.06
Excel導入修復枚舉值不在范圍時的錯誤提示
2.5.3.3
2021.04.03
Excel導入邏輯移除5萬行的限制,默認不限制導入數量
2.5.3.2
2021.03.30
Excel修復OutputBussinessErrorData擴展方法
多Sheet導入對Stream的支持
2.5.3.1
2021.03.12
Excel模板導出支持使用Dictionary、ExpandoObject完成動態導出
優化模板導出邏輯
2.5.3
2021.03.08
Excel模板導出支持使用JSON對象完成動態導出?#I398DI
2.5.2
2021.03.05
Excel導入支持合并行數據?#239
2.5.1.8
2021.02.23
Input string was not in a correct format.#241
使用Stream方式導入xlsx,rowErrors里的rowIndex位置不對#236
2.5.1.7
2021.02.20
Excel支持Base64導出?#219
修復?#214
2.5.1.6
2021.01.31
部分重構模板導出
Excel模板導出語法解析加強?#211
修復當表格下面存在變量時,無法渲染的Bug
2.5.1.5
2021.01.29
移除模板導出時的控制臺日志輸出
2.5.1.4
2021.01.09
修復Excel導出列頭索引與內容排序不一致問題及單測?#226
2.5.1.3
2021.01.02
Add PDF support for paper size
Add PDF support for margins?#223
2.5.1
2020.12.21
導出支持使用ColumnIndex指定導出順序,以導出時在某些情況下順序不一致的問題(Export supports the use of ColumnIndex to specify the export order, so that the order is inconsistent in some cases when exporting)?#179
2.5.0
2020.12.03
Excel導出支持HeaderRowIndex?#164
增加Excel枚舉導出對DescriptionAttribute的支持?#168
Excel生成導入模板支持內置數據驗證#167
支持MaxLengthAttribute、MinLengthAttribute、StringLengthAttribute、RangeAttribute
支持數據驗證
支持輸入提示 To fix The Mapping Values of The total length of a Data Validation list always exceed 255 characters (# 196) (https://github.com/dotnetcore/Magicodes.IE/issues/196)
Excel export List data type errors, and formatting issues.#191?[193] (https://github.com/dotnetcore/Magicodes.IE/issues/193)
導入Excel對Enum類型匹配值映射時,忽略值前后空格
fix MappingValues The total length of a DataValidation list cannot exceed 255 characters?#196
Excel導出List數據類型存在錯誤,以及格式化問題。?#191 #193
The ColumnIndex property does not appear to be valid in Excel import?#198
TableStyle修改為枚舉類型
2.5.0-beta6
2020.11.26
The ColumnIndex property does not appear to be valid in Excel import?#198
2.5.0-beta5
2020.11.25
fix MappingValues The total length of a DataValidation list cannot exceed 255 characters?#196
Excel導出List數據類型存在錯誤,以及格式化問題。?#191 #193
2.5.0-beta4
2020.11.20?To fix The Mapping Values of The total length of a Data Validation list always exceed 255 characters (# 196) (https://github.com/dotnetcore/Magicodes.IE/issues/196)
Excel export List data type errors, and formatting issues.?#191?[193] (https://github.com/dotnetcore/Magicodes.IE/issues/193)
導入Excel對Enum類型匹配值映射時,忽略值前后空格
2.5.0-beta3
2020.10.29
Excel生成導入模板支持內置數據驗證#167
支持MaxLengthAttribute、MinLengthAttribute、StringLengthAttribute、RangeAttribute
支持數據驗證
支持輸入提示
2.5.0-beta2
2020.10.20
Excel導出支持HeaderRowIndex?#164
增加Excel枚舉導出對DescriptionAttribute的支持?#168
2.4.0
2020.10.01
支持單元格導出寬度設置?#129
Excel導出支持對Enum的ValueMapping設置?#106
Excel導出支持對bool類型的ValueMapping設置?#16
#152?篩選器支持依賴注入
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){AppDependencyResolver.Init(app.ApplicationServices);//all other code}
#151 導出添加AutoFitMaxRows,超過指定行數則不啟用AutoFit
添加全局IsDisableAllFilter屬性,以通過特性禁用所有篩選器
#142?【修復】根據模板列表高度的設置,統一設置渲染高度
#157【修復】對低版本框架的兼容
Excel導入對圖片獲取算法的優化
2.4.0-beta4
2020.09.26
#157【修復】對低版本框架的兼容
2.4.0-beta3
2020.09.24
#142?【修復】根據模板列表高度的設置,統一設置渲染高度
2.4.0-beta2
2020.09.16
#152?篩選器支持依賴注入
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){AppDependencyResolver.Init(app.ApplicationServices);//all other code}
#151 導出添加AutoFitMaxRows,超過指定行數則不啟用AutoFit
添加全局IsDisableAllFilter屬性,以通過特性禁用所有篩選器
2.4.0-beta1
2020.09.14
支持單元格導出寬度設置?#129
Excel導出支持對Enum的ValueMapping設置?#106
Excel導出支持對bool類型的ValueMapping設置?#16
2.3.0
2020.08.30
2.3.0-beta8
2020.08.22
修復基于文件流導入時的NULL異常,并完善單元測試?#141**
2.3.0-beta7
2020.08.16
excel添加對ExpandoObject類型的支持?#135**
2020.08.10
【Nuget】版本更新到2.3.0-beta6
多Sheet導入保存標注錯誤單元測試,并沒出現多數據導入效驗bug?#108
Excel多Sheet 導入模板生成?#133
修復Excel模板圖片高度問題?#131
2020.08.04
【Nuget】版本更新到2.3.0-beta5
在runtimes native包問題
對于跨平臺native中?
COM Interop is not supported on this platform.
修復?#130
2020.07.14
【Nuget】版本更新到2.3.0-beta4
2020.07.13
【Nuget】版本更新到2.3.0-beta3
【PDF導出】修復Linux下導出PDf 出錯問題?#125
2020.07.06
【Nuget】版本更新到2.3.0-beta2
【Excel導出】導出業務錯誤數據支持直接返回錯誤數據的文件流字節
【Excel導出】對追加sheet實現同一個Model可自定義傳入不同sheet名稱
exporter.Append(list1,"sheet1").SeparateBySheet().Append(list2).ExportAppendData(filePath);
【Nuget】針對于一些客戶端不支持SemVer 2.0.0 進行采取兼容機制
2020.06.22
【Nuget】版本更新到2.3.0-beta1
【Excel導出】添加對Excel模板導出函數的支持
- {{Formula::AVERAGE?params=G4:G6}}- {{Formula::SUM?params=G4:G6&G4}}
2020.06.16
【Nuget】版本更新到2.2.6
【HTML導出】添加對NETCore2.2模板引擎的支持
2020.06.14
【Nuget】版本更新到2.2.5
【Excel導出】增加分欄、分sheet、追加rows導出?#74
- exporter.Append(list1).SeparateByColumn().Append(list2).ExportAppendData(filePath); - exporter.Append(list1).SeparateBySheet().Append(list2).ExportAppendData(filePath); - exporter.Append(list1).SeparateByRow().AppendHeaders().Append(list2).ExportAppendData(filePath);
[Excel導出】修復‘IsAllowRepeat=true’?#107
[Pdf導出】增加PDF擴展方法,支持通過以參數形式傳遞特性參數?#104
- Task<byte[]> ExportListBytesByTemplate<T>(ICollection<T> data, PdfExporterAttribute pdfExporterAttribute,string temple); - Task<byte[]> ExportBytesByTemplate<T>(T data, PdfExporterAttribute pdfExporterAttribute,string template);
2020.06.07
【Nuget】版本更新到2.2.4
【Excel導入】增加
導入失敗
僅返回錯誤行功能【Excel導入】修復導入的空行標注位置偏移
【Excel導出】增加
SeparateByColumn
進行分割追加列
2020.05.31
【Nuget】版本更新到2.2.3
【Excel導入】增加了stream Csv導入擴展方法
【Word導出】修復word文件字節導出錯誤
2020.05.24
【Nuget】版本更新到2.2.2
【Excel導入】增加了stream導入擴展方法
【Excel導出】增加了內容居中(單列居中、整表居中)
【導出】對一些中間件代碼進行了修復及優化
2020.05.16
【Nuget】版本更新到2.2.1
【PDF導出】對模板引擎進行升級更新
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
IEIgnoreAttribute(可作用于屬性、枚舉成員,可影響導入和導出)
DisplayAttribute
DisplayFormatAttribute
DescriptionAttribute
支持使用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
【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);
2020.03.12
【Nuget】版本更新到2.1.4
【Excel導入】支持圖片導入,見特性ImportImageFieldAttribute
導入為Base64
導入到臨時目錄
導入到指定目錄
【Excel導出】支持圖片導出,見特性ExportImageFieldAttribute
將文件路徑導出為圖片
將網絡路徑導出為圖片
2020.03.06
【Nuget】版本更新到2.1.3
【Excel導入】修復GUID類型的問題。問題見(https://github.com/dotnetcore/Magicodes.IE/issues/44)。
2020.02.25
【Nuget】版本更新到2.1.2
【導入導出】已支持CSV
【文檔】完善Pdf導出文檔
2020.02.24
【Nuget】版本更新到2.1.1-beta
【導入】Excel導入支持導入標注,僅需設置ExcelImporterAttribute的ImportDescription屬性,即會在頂部生成Excel導入說明
【重構】添加兩個接口
IExcelExporter:繼承自IExporter, IExportFileByTemplate,Excel特有的API將在此補充
IExcelImporter:繼承自IImporter,Excel特有的API在此補充,例如“ImportMultipleSheet”、“ImportSameSheets”
【重構】增加實例依賴注入
【構建】完成代碼覆蓋率的DevOps的配置
2020.02.14
【Nuget】版本更新到2.1.0
【導出】PDF導出支持.NET 4.6.1,具體見單元測試
2020.02.13
【Nuget】版本更新到2.0.2
【導入】修復單列導入的Bug,單元測試“OneColumnImporter_Test”。問題見(https://github.com/dotnetcore/Magicodes.IE/issues/35)。
【導出】修復導出HTML、Pdf、Word時,模板在某些情況下編譯報錯的問題。
【導入】重寫空行檢查。
2020.02.11
【Nuget】版本更新到2.0.0
【導出】Excel模板導出修復多個Table渲染以及合并單元格渲染的問題,具體見單元測試“ExportByTemplate_Test1”。問題見(https://github.com/dotnetcore/Magicodes.IE/issues/34)。
【導出】完善模板導出的單元測試,針對導出結果添加渲染檢查,確保所有單元格均已渲染。
2020.02.05
【Nuget】版本更新到2.0.0-beta4
【導入】支持列篩選器(需實現接口【IImportHeaderFilter】),可用于兼容多語言導入等場景,具體見單元測試【ImportHeaderFilter_Test】
【導入】支持傳入標注文件路徑,不傳參則默認同目錄"_"后綴保存
【導入】完善單元測試【ImportResultFilter_Test】
【其他】修改【ValueMappingAttribute】的命名空間為Magicodes.ExporterAndImporter.Core
2020.02.04
【Nuget】版本更新到2.0.0-beta2
【導入】支持導入結果篩選器——IImportResultFilter,可用于多語言場景的錯誤標注,具體使用見單元測試【ImportResultFilter_Test】
【其他】修改IExporterHeaderFilter的命名空間為Magicodes.ExporterAndImporter.Core.Filters
2020.01.18
【Nuget】版本更新到2.0.0-beta1
【導出】完全重構整個導出Excel模塊并且重寫大部分接口
【導出】支持列頭篩選器——IExporterHeaderFilter,具體使用見單元測試
【導出】修復轉換DataTable時支持為空類型
【導出】導出Excel支持拆分Sheet,僅需設置特性【ExporterAttribute】的【MaxRowNumberOnASheet】的值,為0則不拆分。具體見單元測試
【導出】修復導出結果無法篩選的問題。目前導出即為數據表
【導出】添加擴展方法ToExcelExportFileInfo
【導出】IExporter再添加兩個動態DataTable導出方法,無需定義Dto即可動態導出數據,并且支持表頭篩選器、Sheet拆分
/// <summary>/// 導出Excel/// </summary>/// <param name="fileName">文件名稱</param>/// <param name="dataItems">數據</param>/// <param name="exporterHeaderFilter">表頭篩選器</param>/// <param name="maxRowNumberOnASheet">一個Sheet最大允許的行數,設置了之后將輸出多個Sheet</param>/// <returns>文件</returns>Task<ExportFileInfo> Export(string fileName, DataTable dataItems, IExporterHeaderFilter exporterHeaderFilter = null, int maxRowNumberOnASheet = 1000000);/// <summary>/// 導出Excel/// </summary>/// <param name="dataItems">數據</param>/// <param name="exporterHeaderFilter">表頭篩選器</param>/// <param name="maxRowNumberOnASheet">一個Sheet最大允許的行數,設置了之后將輸出多個Sheet</param>/// <returns>文件二進制數組</returns>Task<byte[]> ExportAsByteArray(DataTable dataItems, IExporterHeaderFilter exporterHeaderFilter = null, int maxRowNumberOnASheet = 1000000);
2020.01.16
【Nuget】版本更新到1.4.25
【導出】修復沒有定義導出特性會報錯的情形,具體見單元測試“ExportTestDataWithoutExcelExporter_Test”。問題見(https://github.com/dotnetcore/Magicodes.IE/issues/21)。
2020.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)。
2020.01.14
【Nuget】版本更新到1.4.21
【導出】Excel模板導出修復數據項為Null報錯的Bug。
2020.01.09
【Nuget】版本更新到1.4.20
【導出】Excel模板導出性能優化。5000條表格數據1秒內完成,具體見單元測試ExportByTemplate_Large_Test。
2020.01.08
【Nuget】版本更新到1.4.18
【導入】支持導入最大數量限制
ImporterAttribute支持MaxCount設置,默認為50000
完成相關單元測試
2020.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
【導入】導入完善對日期類型的支持
【導入】完善導入的單元測試