欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现NPOI的Excel导出详解

程序员文章站 2022-03-04 13:09:21
技术点:1.自定义attribute属性2.通过反射取类及其属性的attribute属性值3.npoi包常用属性及方法(我也仅仅知道用到过的,陌生的要么见名知意,要么百度查)实现功能点:list类对象...

技术点:

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# NPOI Excel