Magicodes.IE alternatives and similar packages
Based on the "Serialization" category.
Alternatively, view Magicodes.IE alternatives based on common mentions on social networks and blogs.
-
Protocol Buffers
Protocol Buffers - Google's data interchange format -
Json.NET
Json.NET is a popular high-performance JSON framework for .NET -
MessagePack for C# (.NET, .NET Core, Unity, Xamarin)
Extremely Fast MessagePack Serializer for C#(.NET, .NET Core, Unity, Xamarin). / msgpack.org[C#] -
Bond
Bond is a cross-platform framework for working with schematized data. It supports cross-language de/serialization and powerful generic mechanisms for efficiently manipulating data. Bond is broadly used at Microsoft in high scale services. -
ZeroFormatter
Infinitely Fast Deserializer for .NET, .NET Core and Unity. -
Utf8Json
Definitely Fastest and Zero Allocation JSON Serializer for C#(NET, .NET Core, Unity, Xamarin). -
ServiceStack.Text
.NET's fastest JSON, JSV and CSV Text Serializers -
FileHelpers
The FileHelpers are a free and easy to use .NET library to read/write data from fixed length or delimited records in files, strings or streams -
Msgpack-Cli
MessagePack implementation for Common Language Infrastructure / msgpack.org[C#] -
Ceras
Universal binary serializer for a wide variety of scenarios https://discord.gg/FGaCX4c -
ProtoBuf
C# code generator for reading and writing the protocol buffers format -
JsonSubTypes
Discriminated Json Subtypes Converter implementation for .NET -
ObjectDumper.NET
ObjectDumper is a utility which aims to serialize C# objects to string for debugging and logging purposes. -
Migrant
Fast and flexible serialization framework usable on undecorated classes. -
Bois
Salar.Bois is a compact, fast and powerful binary serializer for .NET Framework. With Bois you can serialize your existing objects with almost no change. -
TcpClientIo
TcpClientIo Wrapper of TcpClient what help focus on WHAT you transfer over TCP, not HOW
Clean code begins in your IDE with SonarLint
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Magicodes.IE or a related project?
README
Magicodes.IE | [简体中文](README.zh-CN.md)
Overview
Import and export general library, support Dto import and export, template export, fancy export and dynamic export, support Excel, Csv, Word, Pdf and Html.
[General description](./docs/Magicodes.IE.en.png)
Azure DevOps
- Build Status:
- Azure DevOps coverage (master):
- Azure DevOps coverage (develop):
- Azure DevOps tests (master):
- Azure DevOps tests (develop):
For details, see: https://dev.azure.com/xinlaiopencode/Magicodes.IE/_build?definitionId=4&_a=summary
NuGet
Stable version (recommended)
Note
- Excel import does not support ".xls" files, that is, Excel97-2003 is not supported.
- For use in Docker, please refer to the section "Use in Docker" in the documentation.
- Relevant functions have been compiled with unit tests. You can refer to unit tests during the use process.
Tutorial
- Basic tutorial of importing student data
- Basic tutorial of export Excel
- Basic tutorial of export Pdf receipts
- Use in Docker
- Dynamic Export
- Import Multi-Sheet Tutorial
- Import and export Excel as pictures
- Excel template export-Export textbook order form
- Excel Merge Row Cells Import
- Exporting multiple formats in NETCore via request headers
- Performance Measurement
- Excel Merge Row Cells Import
- Excel template export - dynamic export
See below for other tutorials or unit tests
See below for update history.
Features
- Need to be used in conjunction with related import and export DTO models, support import and export through DTO and related characteristics. Configure features to control related logic and display results without modifying the logic code; [](./res/导入Dto.png "Import DTO")
- Support various filters to support scenarios such as multi-language, dynamic control column display, etc. For specific usage, see unit test:
- Import column header filter (you can dynamically specify the imported column and imported value mapping relationship)
- Export column header filter (can dynamically control the export column, support dynamic export (DataTable))
- Export column headers filter (can dynamically control the export column, support dynamic export (DataTable))
- Import result filter (can modify annotation file)
- Export supports text custom filtering or processing;
- Import supports automatic skipping of blank lines in the middle;
- Import supports automatically generate import templates based on DTO, and automatically mark required items; [](./res/自动生成的导入模板.png "Generated import template automatically")
- Import supports data drop-down selection, currently only supports enumerated types;
- Imported data supports the processing of leading and trailing spaces and intermediate spaces, allowing specific columns to be set;
- Import supports automatic template checking, automatic data verification, unified exception handling, and unified error encapsulation, including exceptions, template errors and row data errors; [](./res/数据错误统一返回.png "Data error")
- Support import header position setting, the default is 1;
- Support import columns out of order, no need to correspond one to one in order;
- Support to import the specified column index, automatic recognition by default;
- Exporting Excel supports splitting of Sheets, only need to set the value of [MaxRowNumberOnASheet] of the characteristic [ExporterAttribute]. If it is 0, no splitting is required. See unit test for details;
- Support importing into Excel for error marking; [](./res/数据错误.png "Data error annotation") [](./res/多个错误.png "Multiple data errors ")
- Import supports cutoff column setting, if not set, blank cutoff will be encountered by default;
- Support exporting HTML, Word, Pdf, support custom export template; -Export HTML [](./res/导出html.png "Export HTML") -Export Word [](./res/导出Word.png "Export Word") -Export Pdf, support settings, see the update log for details [](./res/导出Pdf.png "Export PDF") -Export receipt [](./res/导出收据.png "Export receipt")
- Import supports repeated verification; [](./res/重复错误.png "Repeated verification")
- Support single data template export, often used to export receipts, credentials and other businesses
- *Support dynamic column export (based on DataTable), and the Sheet will be split automatically if it exceeds 100W. (Thanks to teacher Zhang Shanyou (https://github.com/xin-lai/Magicodes.IE/pull/8 )) *
Support dynamic/ExpandoObject dynamic column export
[Fact(DisplayName = "DTO export supports dynamic types")] public async Task ExportAsByteArraySupportDynamicType_Test() { IExporter exporter = new ExcelExporter(); var filePath = GetTestFilePath($"{nameof(ExportAsByteArraySupportDynamicType_Test)}.xlsx"); DeleteFile(filePath); var source = GenFu.GenFu.ListOf<ExportTestDataWithAttrs>(); string fields = "text,number,name"; var shapedData = source.ShapeData(fields) as ICollection<ExpandoObject>; var result = await exporter.ExportAsByteArray<ExpandoObject>(shapedData); result.ShouldNotBeNull(); result.Length.ShouldBeGreaterThan(0); File.WriteAllBytes(filePath, result); File.Exists(filePath).ShouldBeTrue(); }
*Support value mapping, support setting value mapping relationship through "ValueMappingAttribute" feature. It is used to generate data validation constraints for import templates and perform data conversion. *
/// <summary> /// Gender /// </summary> [ImporterHeader(Name = "Gender")] [Required(ErrorMessage = "Gender cannot be empty.")] [ValueMapping(text: "Male", 0)] [ValueMapping(text: "Female", 1)] public Genders Gender { get; set; }
Support the generation of imported data verification items of enumeration and Bool type, and related data conversion
Enumeration will automatically obtain the description, display name, name and value of the enumeration by default to generate data items
/// <summary> /// Student Status /// </summary> public enum StudentStatus { /// <summary> /// Normal /// </summary> [Display(Name = "正常")] Normal = 0, /// <summary> /// Pupils away /// </summary> [Description("流水")] PupilsAway = 1, /// <summary> /// Suspension /// </summary> [Display(Name = "休学")] Suspension = 2, /// <summary> /// Work-study /// </summary> [Display(Name = "勤工俭学")] WorkStudy = 3, /// <summary> /// Internships /// </summary> [Display(Name = "顶岗实习")] PostPractice = 4, /// <summary> /// Graduate /// </summary> [Display(Name = "毕业")] Graduation = 5, /// <summary> /// Join the army /// </summary> [Display(Name = "参军")] JoinTheArmy = 6, }
[](./res/enum.png "Enumeration to data mapping")
The bool type will generate "yes" and "no" data items by default
If custom value mapping has been set, no default options will be generated
Support excel multi-sheet import [](./res/multipleSheet.png "Enumeration to data mapping")
Support Excel template export, and support image rendering [](./res/ExcelTplExport.png "Excel template export")
The rendering syntax is as follows:
{{Company}} //Cell rendering
{{Table>>BookInfos|RowNo}} //Table rendering start syntax
{{Remark|>>Table}}//Table rendering end syntax
{{Image::ImageUrl?Width=50&Height=120&Alt=404}} //Picture rendering
{{Image::ImageUrl?w=50&h=120&Alt=404}} //Picture rendering
{{Image::ImageUrl?Alt=404}} //Picture rendering
Custom pipelines will be supported in the future.
Support Excel import template to generate annotation [](./res/ImportLabel.png "Excel import annotations")
Support Excel image import and export
- Picture import
- Import as Base64
- Import to temporary directory
- Import to the specified directory
- Picture export
- Export file path as picture
- Export network path as picture
Support multiple entities to export multiple Sheets
Support using some features under the System.ComponentModel.DataAnnotations namespace to control import and export #63
Support the use of custom formatter in ASP.NET Core Web API to export content such as Excel, Pdf, Csv #64
Support export by column, sheet, and additional rows
exporter.Append(list1).SeparateByColumn().Append(list2).ExportAppendData(filePath);
For details, see the above tutorial "Magicodes.IE Fancy Export"
- Support cell export width setting
[ExporterHeader(Width = 100)]
public DateTime Time3 { get; set; }
*Excel export supports HeaderRowIndex. Add the HeaderRowIndex attribute to the ExcelExporterAttribute export attribute class, so that it is convenient to specify the export from the first row when exporting. *
Excel generated import template supports built-in data verification
The support for the built-in data validation can be turned on through the IsInterValidation attribute, and it should be noted that only MaxLengthAttribute, MinLengthAttribute, StringLengthAttribute, and RangeAttribute support the opening operation of the built-in data validation.
[](./res/dataval1.png "Excel verification") [](./res/dataval2.png "Excel verification")
Support display operations for input prompts: [](./res/dataval3.png "Excel verification")
- Excel import supports merging row data #239
[合并行导入文件](res/image-20210306105147319.png)
- Add packaging for Abp module, see #318 for details.
FAQ
Update history
[Update history](RELEASE.md)
Contributors
Code Contributors
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
Financial Contributors
Become a financial contributor and help us sustain our community. [Contribute]
Individuals
Organizations
Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]
*Note that all licence references and agreements mentioned in the Magicodes.IE README section above
are relevant to that project's source code only.