• Stars
    star
    2,074
  • Rank 22,281 (Top 0.5 %)
  • Language
    C#
  • License
    MIT License
  • Created over 6 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Import and export general library, support Dto import and export, template export, fancy export and dynamic export, support Excel, Csv, Word, Pdf and Html.

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

Azure DevOps

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

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

NuGet

Stable version (recommended)

Name NuGet
Magicodes.IE.Core NuGet
Magicodes.IE.Excel NuGet
Magicodes.IE.Excel.NPOI NuGet
Magicodes.IE.Excel.AspNetCore NuGet
Magicodes.IE.Pdf NuGet
Magicodes.IE.Word NuGet
Magicodes.IE.Html NuGet
Magicodes.IE.Csv NuGet
Magicodes.IE.AspNetCore NuGet
Magicodes.IE.EPPlus NuGet
Magicodes.IE.Excel.Abp NuGet
Magicodes.IE.Csv.Abp NuGet
Magicodes.IE.Html.Abp NuGet
Magicodes.IE.Pdf.Abp NuGet
Magicodes.IE.Word.Abp NuGet
Magicodes.IE.Stash 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. Basic tutorial of importing student data
  2. Basic tutorial of export Excel
  3. Basic tutorial of export Pdf receipts
  4. Use in Docker
  5. Dynamic Export
  6. Import Multi-Sheet Tutorial
  7. Import and export Excel as pictures
  8. Excel template export-Export textbook order form
  9. Excel Merge Row Cells Import
  10. Exporting multiple formats in NETCore via request headers
  11. Performance Measurement
  12. Excel Merge Row Cells Import
  13. 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;
  • 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;
  • 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;
  • 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;
  • 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 -Export Word -Export Pdf, support settings, see the update log for details -Export receipt
  • Import supports 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 (#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,
       	}

    • 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

  • Support Excel template export, and support image rendering

    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

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

Support display operations for input prompts:

  • Excel import supports merging row data #239

合并行导入文件

  • Add packaging for Abp module, see #318 for details.

FAQ

Question List

Update history

Update history

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

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]

More Repositories

1

FastGithub

github加速神器,解决github打不开、用户头像无法加载、releases无法上传下载、git-clone、git-pull、git-push失败等问题
C#
13,273
star
2

CAP

Distributed transaction solution in micro-service base on eventually consistency, also an eventbus with Outbox pattern
C#
6,267
star
3

Util

Util是一个.Net平台下的应用框架,旨在提升中小团队的开发能力,由工具类、分层架构基类、Ui组件,配套代码生成模板,权限等组成。
C#
4,306
star
4

WTM

Use WTM to write .netcore app fast !!!
C#
4,234
star
5

FreeSql

🦄 .NET aot orm, C# orm, VB.NET orm, Mysql orm, Postgresql orm, SqlServer orm, Oracle orm, Sqlite orm, Firebird orm, 达梦 orm, 人大金仓 orm, 神通 orm, 翰高 orm, 南大通用 orm, 虚谷 orm, 国产 orm, Clickhouse orm, QuestDB orm, MsAccess orm.
C#
4,071
star
6

DotnetSpider

DotnetSpider, a .NET standard web crawling library. It is lightweight, efficient and fast high-level web crawling & scraping framework
C#
3,753
star
7

osharp

OSharp是一个基于.Net6.0的快速开发框架,框架对 AspNetCore 的配置、依赖注入、日志、缓存、实体框架、Mvc(WebApi)、身份认证、功能权限、数据权限等模块进行更高一级的自动化封装,并规范了一套业务实现的代码结构与操作流程,使 .Net 框架更易于应用到实际项目开发中。
C#
2,758
star
8

BootstrapBlazor

Bootstrap Blazor is an enterprise-level UI component library based on Bootstrap and Blazor.
C#
2,492
star
9

WebApiClient

A REST API library with better functionality, performance, and scalability than refit
C#
2,047
star
10

NPOI

A .NET library for reading and writing Microsoft Office binary and OOXML file formats.
C#
1,877
star
11

EasyCaching

💥 EasyCaching is an open source caching library that contains basic usages and some advanced usages of caching which can help us to handle caching more easier!
C#
1,736
star
12

AspectCore-Framework

AspectCore is an AOP-based cross platform framework for .NET Standard.
C#
1,684
star
13

AgileConfig

基于.NET Core开发的轻量级分布式配置中心 / .NET Core lightweight configuration server
C#
1,483
star
14

Natasha

基于 Roslyn 的 C# 动态程序集构建库,该库允许开发者在运行时使用 C# 代码构建域 / 程序集 / 类 / 结构体 / 枚举 / 接口 / 方法等,使得程序在运行的时候可以增加新的模块及功能。Natasha 集成了域管理/插件管理,可以实现域隔离,域卸载,热拔插等功能。 该库遵循完整的编译流程,提供完整的错误提示, 可自动添加引用,完善的数据结构构建模板让开发者只专注于程序集脚本的编写,兼容 stanadard2.0 / netcoreapp3.0+, 跨平台,统一、简便的链式 API。 且我们会尽快修复您的问题及回复您的 issue.
C#
1,449
star
15

HttpReports

HttpReports is an APM (application performance monitor) system for .Net Core.
C#
1,260
star
16

sharding-core

high performance lightweight solution for efcore sharding table and sharding database support read-write-separation .一款ef-core下高性能、轻量级针对分表分库读写分离的解决方案,具有零依赖、零学习成本、零业务代码入侵
C#
1,142
star
17

SmartSql

SmartSql = MyBatis in C# + .NET Core+ Cache(Memory | Redis) + R/W Splitting + PropertyChangedTrack +Dynamic Repository + InvokeSync + Diagnostics
C#
1,098
star
18

FlubuCore

A cross platform build and deployment automation system for building projects and executing deployment scripts using C# code.
C#
907
star
19

Alipay.AopSdk.Core

支付宝(Alipay)服务端SDK,采用.NET Standard 2.0,支持.NET Core >=2.0,与官方SDK接口完全相同。完全可以按照官方文档进行开发。除了支持支付以外,官方SDK支持的功能本SDK全部支持,比如生活号、服务窗、行业合作等,且用法几乎一样,代码都可参考官方文档代码。
C#
778
star
20

SmartCode

SmartCode = IDataSource -> IBuildTask -> IOutput => Build Everything!!!
C#
572
star
21

CanalSharp

Alibaba mysql database binlog subscription & consumer components Canal's .NET client.
C#
559
star
22

aspnetcore-doc-cn

The Simplified Chinese edition of Microsoft ASP.NET Core documentation, translated by .NET Core Community and .NET China Community.
C#
521
star
23

Home

Home repo of .NET Core Community
299
star
24

mocha

Mocha is an application performance monitor tools based on OpenTelemetry, which also provides a scalable platform for observability data analysis and storage.
C#
142
star
25

Collections

Utilities and extensions for Collections includes Collections.Paginable and so on...
C#
88
star
26

EntityFrameworkCore.KingbaseES

Entity Framework Core provider for KingbaseES Database
C#
45
star
27

EntityFrameworkCore.GaussDB

Entity Framework Core provider for GaussDB Database
C#
32
star
28

FlubuCore.Examples

Examples for FlubuCore - a cross platform build automation tool for building projects and executing deployment scripts using C# code.
C#
32
star
29

wind-rises

25
star
30

Compile.Environment

When using the Roslyn library for dynamic compilation, you can introduce the library to provide a dynamic compilation environment.
10
star
31

SourceLink.Environment

Provide an inheritable NuGet package for the SourceLink feature.
7
star
32

projects

This repository is the site of NCC Projects include both Top-Level projects and Sandbox projects.
CSS
5
star
33

Natasha.Docs

The document for Natasha
JavaScript
4
star
34

DotNetCore.GaussDB

It's the foundation of DotNetCore.EntityFrameworkCore.GaussDB
C#
3
star
35

dotnetcore.github.io

.NET Core Community Official WebSite
HTML
2
star