zoukankan      html  css  js  c++  java
  • ASP.NET 开源导入导出库Magicodes.IE 导出Excel教程

    要点

    • 导出特性
    • 如何导出Excel表头
    • 如何导出数据、如何进行数据的切割、如何使用筛选器

    导出特性

    ExporterAttribute

    • Name: 名称(当前Sheet 名称)
    • HeaderFontSize:头部字体大小
    • FontSize:正文字体大小
    • MaxRowNumberOnASheet:Sheet最大允许的行数,设置了之后将输出多个Sheet
    • TableStyle:表格样式风格
    • AutoFitAllColumnbool 自适应所有列
    • Author:作者
    • ExporterHeaderFilter:头部筛选器

    ExporterHeaderAttribute

    • DisplayName: 显示名称
    • FontSize: 字体大小
    • IsBold: 是否加粗
    • Format: 格式化
    • IsAutoFit: 是否自适应
    • IsIgnore: 是否忽略

    主要步骤

    1.安装包Magicodes.IE.Excel

    Install-Package Magicodes.IE.Excel
    

    2.导出Excel表头

    • 通过数组导出
         public async Task ExportHeader()
            {
                IExporter exporter = new ExcelExporter();
    
                var filePath = "h.xlsx";
                var arr = new[] { "Name1", "Name2", "Name3", "Name4", "Name5", "Name6" };
                var sheetName = "Test";
                var result = await exporter.ExportHeaderAsByteArray(arr, sheetName);
                result.ToExcelExportFileInfo(filePath);
    
            }
    
    • 通过DTO导出
            public async Task ExportHeader()
            {
                IExporter exporter = new ExcelExporter();
    
                var filePath = "h.xlsx";
                var result = await exporter.ExportHeaderAsByteArray<Student>( new Student());
                result.ToExcelExportFileInfo(filePath);
    
            }
    

    3.导出Excel

    • 基础导出
          
            public class Student
            {
                /// <summary>
                ///     姓名
                /// </summary>
                public string Name { get; set; }
                /// <summary>
                ///     年龄
                /// </summary>
                public int Age { get; set; }
            }
    
            public async Task Export()
            {
                IExporter exporter = new ExcelExporter();
                var result = await exporter.Export("a.xlsx", new List<Student>()
                    {
                        new Student
                        {
                            Name = "MR.A",
                            Age = 18
                        },
                        new Student
                        {
                            Name = "MR.B",
                            Age = 19
                        },
                        new Student
                        {
                            Name = "MR.B",
                            Age = 20
                        }
                    });
            }
    
    
    

    通过如上代码我们可以将Excel导出,如下图所示

    • 特性导出示例
    
            public async Task Export()
            {
                IExporter exporter = new ExcelExporter();
                var result = await exporter.Export("test.xlsx", new List<Student>()
                    {
                        new Student
                        {
                            Name = "MR.A",
                            Age = 18,
                            Remarks = "我叫MR.A,今年18岁",
                            Birthday=DateTime.Now
                        },
                        new Student
                        {
                            Name = "MR.B",
                            Age = 19,
                            Remarks = "我叫MR.B,今年19岁",
                            Birthday=DateTime.Now
                        },
                        new Student
                        {
                            Name = "MR.C",
                            Age = 20,
                            Remarks = "我叫MR.C,今年20岁",
                            Birthday=DateTime.Now
                        }
                    });
            }
            /// <summary>
            ///     学生信息
            /// </summary>
            [ExcelExporter(Name = "学生信息", TableStyle = "Light10", AutoFitAllColumn = true, MaxRowNumberOnASheet = 2))]
            public class Student
            {
                /// <summary>
                ///     姓名
                /// </summary>
                [ExporterHeader(DisplayName = "姓名")]
                public string Name { get; set; }
                /// <summary>
                ///     年龄
                /// </summary>
                [ExporterHeader(DisplayName = "年龄")]
                public int Age { get; set; }
                /// <summary>
                ///     备注
                /// </summary>
                public string Remarks { get; set; }
                /// <summary>
                ///     出生日期
                /// </summary>
                [ExporterHeader(DisplayName = "出生日期", Format = "yyyy-mm-DD")]
                public DateTime Birthday { get; set; }
            }
    
    
    

    通过如上代码我们可以将Excel导出,如下图所示

    1. ExcelExporter特性可以设置导出的全局设置,比如表格样式,Sheet名称,自适应列等等具体参照 导出特性
    2. ExporterHeader特性我们可以对表头名称、样式等等进行设置 具体参照 导出特性
    3. ExcelExporter MaxRowNumberOnASheet 属性对数据进行拆分,通过该属性指定Sheet数据长度从而实现自动切割
    • 表头筛选器
            /// <summary>
            ///     学生信息
            /// </summary>
            [ExcelExporter(Name = "学生信息", TableStyle = "Light10", AutoFitAllColumn = true, MaxRowNumberOnASheet = 2,ExporterHeaderFilter = typeof(ExporterStudentHeaderFilter))]
            public class Student
            {
                /// <summary>
                ///     姓名
                /// </summary>
                [ExporterHeader(DisplayName = "姓名")]
                public string Name { get; set; }
                /// <summary>
                ///     年龄
                /// </summary>
                [ExporterHeader(DisplayName = "年龄")]
                public int Age { get; set; }
                /// <summary>
                ///     备注
                /// </summary>
                public string Remarks { get; set; }
            }
    
            
            public class ExporterStudentHeaderFilter : IExporterHeaderFilter
            {
                /// <summary>
                /// 表头筛选器(修改名称)
                /// </summary>
                /// <param name="exporterHeaderInfo"></param>
                /// <returns></returns>
                public ExporterHeaderInfo Filter(ExporterHeaderInfo exporterHeaderInfo)
                {
                    if (exporterHeaderInfo.DisplayName.Equals("姓名"))
                    {
                        exporterHeaderInfo.DisplayName = "name";
                    }
                    return exporterHeaderInfo;
                }
            }
    

    通过如上代码片段我们实现 IExporterHeaderFilter 接口,IExporterHeaderFilter以便支持多语言、动态控制列展示等场景

    Reference

    https://github.com/dotnetcore/Magicodes.IE

  • 相关阅读:
    MyBatis:2
    MyBatis:1
    synchronized锁普通方法和锁静态方法
    打印倒直角三角形
    迭代器模拟for循环
    Python迭代对象与迭代器
    ffmpeg用法(心得体会还有你见过的用法)
    ffmpeg命令选项解释
    ffmpeg一些filter用法、以及一些功能命令
    FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)
  • 原文地址:https://www.cnblogs.com/yyfh/p/12218673.html
Copyright © 2011-2022 走看看