Loic.dotnetcore.Magicodes.IE 1.0.0

dotnet add package Loic.dotnetcore.Magicodes.IE --version 1.0.0
                    
NuGet\Install-Package Loic.dotnetcore.Magicodes.IE -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Loic.dotnetcore.Magicodes.IE" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Loic.dotnetcore.Magicodes.IE" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Loic.dotnetcore.Magicodes.IE" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Loic.dotnetcore.Magicodes.IE --version 1.0.0
                    
#r "nuget: Loic.dotnetcore.Magicodes.IE, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=Loic.dotnetcore.Magicodes.IE&version=1.0.0
                    
Install Loic.dotnetcore.Magicodes.IE as a Cake Addin
#tool nuget:?package=Loic.dotnetcore.Magicodes.IE&version=1.0.0
                    
Install Loic.dotnetcore.Magicodes.IE as a Cake Tool

<img align="right" src="./res/logo.jpg" width="300"/>

Magicodes.IE | 简体中文

Member project of .NET Core Community nuget Build Status stats License

Stargazers over time

Azure DevOps tests (master) Azure DevOps coverage (branch) Financial Contributors on Open Collective

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

Milestone

# Status Completion time Milestone situation
3.0 ☕In progress 2021-12-31 To Do
2.5 🚩Completed 2020-10-30 Completed
2.4 🚩Completed 2020-09-30 Completed
2.3 🚩Completed 2020-06-30 Completed
2.2 🚩Completed 2020-04-31 Completed
2.1 🚩Completed 2020-03-15 Completed

Azure DevOps

  • Build Status:Build Status
  • Azure DevOps coverage (master): Azure DevOps coverage (branch)
  • Azure DevOps coverage (develop): Azure DevOps coverage (branch)
  • Azure DevOps tests (master): Azure DevOps tests (master)
  • Azure DevOps tests (develop): Azure DevOps tests (develop)

For details, see: https://dev.azure.com/xinlaiopencode/Magicodes.IE/_build?definitionId=4&_a=summary

Nuget

Name 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

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

  1. <a href="docs/1.Basic tutorial of importing student data.md">Basic tutorial of importing student data</a>
  2. <a href="docs/2.Basic tutorial of export Excel.md">Basic tutorial of export Excel</a>
  3. <a href="docs/3.Basic tutorial of export Pdf receipts.md">Basic tutorial of export Pdf receipts</a>
  4. <a href="docs/4.Use in Docker.md">Use in Docker</a>
  5. <a href="docs/5.Dynamic Export.md">Dynamic Export</a>
  6. <a href="docs/6.Import Multi-Sheet Tutorial.md">Import Multi-Sheet Tutorial</a>
  7. <a href="docs/8. Import and export Excel as pictures.md">Import and export Excel as pictures</a>
  8. <a href="docs/9.Excel template export-Export textbook order form .md">Excel template export-Export textbook order form</a>
  9. <a href="docs/Excel Merge Row Cells Import.md">Excel Merge Row Cells Import</a>
  10. <a href="docs/12.Exporting multiple formats in NETCore via request headers.md">Exporting multiple formats in NETCore via request headers</a>
  11. <a href="docs/13.Performance Measurement.md">Performance Measurement</a>
  12. <a href="docs/Excel Merge Row Cells Import.md">Excel Merge Row Cells Import</a>
  13. <a href="docs/Excel template export - dynamic export.md">Excel template export - dynamic export</a>

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; alternate text is missing from this package README image
  • 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))
    • 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; alternate text is missing from this package README image
  • 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; alternate text is missing from this package README image
  • 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; alternate text is missing from this package README image alternate text is missing from this package README image
  • 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 alternate text is missing from this package README image -Export Word alternate text is missing from this package README image -Export Pdf, support settings, see the update log for details alternate text is missing from this package README image -Export receipt alternate text is missing from this package README image
  • Import supports repeated verification; alternate text is missing from this package README image
  • 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导出支持动态类型")]
        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>
        ///     性别
        /// </summary>
        [ImporterHeader(Name = "性别")]
        [Required(ErrorMessage = "性别不能为空")]
        [ValueMapping(text: "男", 0)]
        [ValueMapping(text: "女", 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>
        	/// 学生状态 正常、流失、休学、勤工俭学、顶岗实习、毕业、参军
        	/// </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,
        	}
      

      alternate text is missing from this package README image

    • 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 alternate text is missing from this package README image

  • Support Excel template export, and support image rendering alternate text is missing from this package README image

    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 alternate text is missing from this package README image

  • 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.

alternate text is missing from this package README image alternate text is missing from this package README image

Support display operations for input prompts: alternate text is missing from this package README image

  • Excel import supports merging row data #239

合并行导入文件

FAQ

Question List

Update history

Update history

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute]. <a href="https://github.com/dotnetcore/Magicodes.IE/graphs/contributors"><img src="https://opencollective.com/magicodes/contributors.svg?width=890&button=false" /></a>

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

<a href="https://opencollective.com/magicodes"><img src="https://opencollective.com/magicodes/individuals.svg?width=890"></a>

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

<a href="https://opencollective.com/magicodes/organization/0/website"><img src="https://opencollective.com/magicodes/organization/0/avatar.svg"></a> <a href="https://opencollective.com/magicodes/organization/1/website"><img src="https://opencollective.com/magicodes/organization/1/avatar.svg"></a> <a href="https://opencollective.com/magicodes/organization/2/website"><img src="https://opencollective.com/magicodes/organization/2/avatar.svg"></a> <a href="https://opencollective.com/magicodes/organization/3/website"><img src="https://opencollective.com/magicodes/organization/3/avatar.svg"></a> <a href="https://opencollective.com/magicodes/organization/4/website"><img src="https://opencollective.com/magicodes/organization/4/avatar.svg"></a> <a href="https://opencollective.com/magicodes/organization/5/website"><img src="https://opencollective.com/magicodes/organization/5/avatar.svg"></a> <a href="https://opencollective.com/magicodes/organization/6/website"><img src="https://opencollective.com/magicodes/organization/6/avatar.svg"></a> <a href="https://opencollective.com/magicodes/organization/7/website"><img src="https://opencollective.com/magicodes/organization/7/avatar.svg"></a> <a href="https://opencollective.com/magicodes/organization/8/website"><img src="https://opencollective.com/magicodes/organization/8/avatar.svg"></a> <a href="https://opencollective.com/magicodes/organization/9/website"><img src="https://opencollective.com/magicodes/organization/9/avatar.svg"></a>

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net5.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0 1 7/31/2021