.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); }
效果:
无限接近死亡,才能领悟生命的真谛