.Net Core Excel导出神器Npoi.Mapper

常规操作

Npoi.Mapper的主题内容包括两大块,一个是针对导入,一个是针对导出。接下来我们先来简单演示一下最基础的导入导出。首先我们新建一个Student类作为数据承载的载体,简单定义大致如下

public class Student
{
    [Column("学号")]
    public int Id { get; set; }
    [Column("姓名")]
    public string Name { get; set; }
    [Column("性别")]
    public string Sex { get; set; }
    [Column("生日",CustomFormat = "yyyy-MM-dd")]
    public DateTime BirthDay { get; set; }
}

然后引入Npoi.Mapper的nuget包:<PackageReference Include="Npoi.Mapper" Version="3.5.1" />

导出操作

接下来我们构建一个Student集合,然后初始化一部分简单的数据,将这些数据导出到Excel,接下来做一个简单的演示

  public void Export()
        {
            string existPath = "D:\\导出文件夹地址";
            if (!Directory.Exists(existPath))
            {
                Directory.CreateDirectory(existPath);//不存在就创建目录
            }           
            string filename = existPath +"\\"+ DateTime.Now.ToString("yyyyMMddHHmmss") + "导出学生文件.xlsx";
            List<Student> students = new List<Student>
      {
          new Student{ Id = 1,Name="夫子",Sex="",BirthDay=new DateTime(1999,10,11) },
          new Student{ Id = 2,Name="余帘",Sex="",BirthDay=new DateTime(1999,12,12) },
          new Student{ Id = 3,Name="李慢慢",Sex="",BirthDay=new DateTime(1999,11,11) },
          new Student{ Id = 4,Name="叶红鱼",Sex="",BirthDay=new DateTime(1999,10,10) }
      };
            //声明mapper操作对象
            var mapper = new Mapper();
            //第一个参数为导出Excel名称
            //第二个参数为Excel数据来源
            //第三个参数为导出的Sheet名称
            //overwrite参数如果是要覆盖已存在的Excel或者新建Excel则为true,如果在原有Excel上追加数据则为false
            //xlsx参数是用于区分导出的数据格式为xlsx还是xls
            mapper.Save(filename, students, "sheet1", overwrite: true, xlsx: true);
        }

效果图

 另外一种

string filename = DateTime.Now.ToString("yyyyMMddHHmmss") + "物流码库存导出.xls";
                //数据
                var list = body;
                using (MemoryStream mem = new MemoryStream())
                {
                    using (StreamWriter sw = new StreamWriter(mem))
                    {
                        sw.BaseStream.Seek(0, SeekOrigin.End);
                        //开始写入
                        foreach (var item in list)
                        {
                            sw.WriteLine(item.MemberID);
                            sw.WriteLine(item.MemberName);
                            sw.WriteLine(item.LogisticCode);
                        }
                        //清空缓冲区
                        sw.Flush();
                        //关闭流
                        sw.Close();
                    }
                    return File(mem.ToArray(), "application/vnd.ms-excel", filename);
                }

效果:

 

 

 

posted @ 2021-07-19 13:53  东方李  阅读(306)  评论(0编辑  收藏  举报