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导出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Unity实现切割图集工具

    Unity实现切割图集工具

    这篇文章主要为大家详细介绍了Unity实现切割图集工具,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • C#随机设置900-1100毫秒延迟的方法

    C#随机设置900-1100毫秒延迟的方法

    这篇文章主要介绍了C#随机设置900-1100毫秒延迟的方法,涉及C#中Thread.Sleep方法的使用技巧,需要的朋友可以参考下
    2015-04-04
  • C#及WPF获取本机所有字体和颜色的方法

    C#及WPF获取本机所有字体和颜色的方法

    这篇文章主要介绍了C#及WPF获取本机所有字体和颜色的方法,实例分析了C#及WPF获取本机字体及颜色的相关技巧,非常简单实用,需要的朋友可以参考下
    2015-09-09
  • C#实现Excel导入sqlite的方法

    C#实现Excel导入sqlite的方法

    这篇文章主要介绍了C#实现Excel导入sqlite的方法,是C#程序设计中非常重要的一个实用技巧,需要的朋友可以参考下
    2014-09-09
  • c#创建浮动工具栏功能示例

    c#创建浮动工具栏功能示例

    这篇文章主要介绍了c#创建浮动工具栏功能示例,大家参考使用吧
    2013-12-12
  • C# 手写识别的实现示例

    C# 手写识别的实现示例

    本文主要介绍了C# 手写识别的实现示例,文章详细介绍了如何使用C#语言调用OpenCV库实现手写识别,并通过示例程序展示了整个手写识别过程,感兴趣的可以了解一下
    2023-08-08
  • c#判断字符是否为中文的三种方法分享(正则表达式判断)

    c#判断字符是否为中文的三种方法分享(正则表达式判断)

    判断一个字符是不是汉字通常有三种方法,第一种用 ASCII 码判断,第二种用汉字的UNICODE编码范围判断,第三种用正则表达式判断,以下是具体方法
    2014-01-01
  • C#实现程序等待延迟执行的方法

    C#实现程序等待延迟执行的方法

    这篇文章主要介绍了C#实现程序等待延迟执行的方法,涉及C#动态链接库的使用及延迟的实现技巧,需要的朋友可以参考下
    2015-09-09
  • C#在新建线程中使用Timer无效问题及解决

    C#在新建线程中使用Timer无效问题及解决

    这篇文章主要介绍了C#在新建线程中使用Timer无效问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • C# 并行和多线程编程——认识和使用Task

    C# 并行和多线程编程——认识和使用Task

    这篇文章主要介绍了C# 并行和多线程编程——认识和使用Task的的相关资料,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2021-02-02

最新评论