C#实现NPOI的Excel导出详解

 更新时间:2022年01月19日 17:16:04   作者:嘿!等你下课  
这篇文章主要介绍了C#实现NPOI的Excel导出的示例代码,文中的实现过程讲解详细,对我们的学习或工作有一定的帮助,感兴趣的可以跟随小编一起学习一下

技术点:

1.自定义attribute属性

2.通过反射取类及其属性的attribute属性值

3.NPOI包常用属性及方法(我也仅仅知道用到过的,陌生的要么见名知意,要么百度查)

实现功能点:

List类对象的模板导出,实用场景例子见最后代码块(emm...还是比较抽象,代码见)

EXCEL导出类DTO超类

定义继承导出类DTO的特性说明类

Excel帮助类

这部分要讲的点其实挺多的,关键就是EXCEL导出所用到的数据源是强类型的。

可以看出来list其实是EF的Queryable toList()后的类集合,作为数据源存在

里面的DTO DesWeeklyReportExcExp继承ExcelSuper,特性分别加在类及属性上。

public class XXXXController : CoreController
{
    // 控制器内部
    
    [HttpPost]
    public ActionResult export()
    {
        // 控制器接口
        var list = op
                    .GetPagedQuery(PageModel)
                    .Select(s => new DesWeeklyReportExcExp
                    {
                        col1 = s.Project.ProjName,
                        col2 = s.ColAttROPDate1?.ToString("yyyy.MM.dd"),
                        col3 = (s.ColAttROPDate2 == null ? "无" : s.ColAttROPDate2.Value.ToString("yyyy.MM.dd"))
                                                       + "/"
                                                       + (s.ColAttROPDate3 == null ? "无" : s.ColAttROPDate3.Value.ToString("yyyy.MM.dd")),
                        col4 = s.ColAttROPDate4?.ToString("yyyy.MM.dd")
                    }).ToList();
         string filePath = Server.MapPath("~/download/[这是模板名称].xlsx");
         string filename = Path.GetFileNameWithoutExtension(filePath);// 文件名称
         string extension = Path.GetExtension(filePath);// 后缀名 带点(.)
         string fileDownloadName = filename + extension;

         var fs = ExcelHelper.ExportToExcel(list, filePath).ToArray();
         return File(fs, "application/ms-excel", fileDownloadName);
    }
}

[ExcelExpClassAttribute(2, 0, 2, 0)]
public class DesWeeklyReportExcExp : ExcelSuper
{
    /// <summary>
    /// 列1
    /// </summary>
    [ExcelExp(SortIndex = 0, ColName = "列1")]
    public string col1 { get; set; }

    /// <summary>
    /// 列2
    /// </summary>
    [ExcelExp(SortIndex = 0, ColName = "列2")]
    public string col2 { get; set; }

    /// <summary>
    /// 列3
    /// </summary>
    [ExcelExp(SortIndex = 0, ColName = "列3")]
    public string col3 { get; set; }

    /// <summary>
    /// 列4
    /// </summary>
    [ExcelExp(SortIndex = 0, ColName = "列4")]
    public string col4 { get; set; }
}

到此这篇关于C#实现NPOI的Excel导出详解的文章就介绍到这了,更多相关C# NPOI的Excel导出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C# 中对象序列化XML的方法

    C# 中对象序列化XML的方法

    这篇文章主要介绍了C# 中对象序列化XML的方法,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • C#泛型Dictionary的用法实例详解

    C#泛型Dictionary的用法实例详解

    这篇文章主要介绍了C#泛型Dictionary的用法,并以实例的形式讲述了对键值对的填充、移除及遍历等操作,需要的朋友可以参考下
    2014-09-09
  • C#使用反射机制实现延迟绑定

    C#使用反射机制实现延迟绑定

    这篇文章介绍了C#使用反射实现延迟绑定的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • C#/VB.NET实现PPT或PPTX转换为图像功能

    C#/VB.NET实现PPT或PPTX转换为图像功能

    由于大多数便携式设备支持浏览图片而不支持浏览PowerPoint 文件,所以相比较而言,图像对于用户而言更加友好。本文将利用C#/VB.NET实现PPT或PPTX转换为图像功能,需要的可以参考一下
    2022-08-08
  • Enterprise Library for .NET Framework 2.0缓存使用实例

    Enterprise Library for .NET Framework 2.0缓存使用实例

    这篇文章主要介绍了Enterprise Library for .NET Framework 2.0缓存使用实例,是进行项目开发时非常有用的功能,需要的朋友可以参考下
    2014-08-08
  • C#实现自动生成电子印章

    C#实现自动生成电子印章

    网络办公正逐渐成为常态,无纸化办公也是一个潮流。本文将利用C#语言实现自动生成电子印章功能,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-08-08
  • 浅析.NET中AsyncLocal的实现原理

    浅析.NET中AsyncLocal的实现原理

    这篇文章主要为大家详细介绍了.NET中AsyncLocal的具体实现原理,文中的示例代码讲解详细,具有一定的借鉴价值,如果有讲得不清晰或不准确的地方,还望指出
    2023-08-08
  • C#获取web.config配置文件内容的方法

    C#获取web.config配置文件内容的方法

    这篇文章主要介绍了C#获取web.config配置文件内容的方法,涉及C#配置文件属性获取的相关技巧,需要的朋友可以参考下
    2015-05-05
  • C#开发教程之FTP上传下载功能详解

    C#开发教程之FTP上传下载功能详解

    这篇文章主要为大家详细介绍了C#开发教程之FTP上传下载功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • C#中将dateTimePicker初始值设置为空

    C#中将dateTimePicker初始值设置为空

    本文主要介绍了C#中将dateTimePicker初始值设置为空,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02

最新评论