C#/.NET使用EPPlus组件导出数据到EXCEL表格并下载到本地的示例

类库组件 2016-07-11 316浏览 收藏本文

1.创建解决方案

打开Visual Stuido(本示例为2015的版本),创建一个新的MVC项目解决方案并命名为:EPPlusDemo

2.安装EPPlus包

打开nuget.org网站,搜索EPPlus,得到EPPlus的安装命令如下:

EPPlus Nuget.org包安装命令
EPPlus Nuget.org包安装命令

3.创建示例实体及演示数据

3.1 在解决方案[EPPlusDemo]中的Models的文件夹下创建一个名为Person的实体类,实体的属性代码如下:

using System;

namespace EPPlusDemo.Model { public class Person { /// <summary> /// 名字 /// </summary> public string Name { get; set; } /// <summary> /// 出生日期 /// </summary> public DateTime Birthday { get; set; } /// <summary> /// 薪资 /// </summary> public decimal Salary { get; set; } /// <summary> /// 职位 /// </summary> public string Title { get; set; } } }

Person实体类中包含了一个人的名字,出生日期,薪资和职位4个属性,本文后面的操作将基于这些完成。 3.2 创建一个名为Data的文件夹,在这个文件夹下分别创建一个IDataProvider接口和一个LocalDataProvider类,其中IDataProvider为本示例数据的提供接口类,LocalDataProvider继承至IDataProvider,由于是示例,所以LocalDataProvider只实现了硬编码的数据源。两个文件的代码如下:

IDataProvider.cs:

using System.Collections.Generic;
using EPPlusDemo.Models;

namespace EPPlusDemo.Data { public interface IDataProvider { IEnumerable<Person> Init(); } }

LocalDataProvider.cs

using System;
using System.Collections.Generic;
using EPPlusDemo.Models;

namespace EPPlusDemo.Data { public class LocalDataProvider : IDataProvider { public IEnumerable<Person> Init() { var lst = new List<Person> { new Person {Name="张三",Birthday=new DateTime(1980,1,1),Salary=15000.50m,Title="项目主管" }, new Person {Name="李四",Birthday=new DateTime(1985,2,24),Salary=12000,Title="项目经理" }, new Person {Name="王五",Birthday=new DateTime(1988,11,10),Salary=12000,Title="工程师" }, new Person {Name="小牛",Birthday=new DateTime(1990,10,26),Salary=12000,Title="技术员" } }; return lst; } } }

3.3 创建HomeController控制器,并在该控制器中创建两个Action,分别为Index和Export。在操作Export中我们来实现填充Excel数据并下载的功能,整个HomeController控制器的具体代码如下:

using System;
using System.IO;
using System.Web.Mvc;
using EPPlusDemo.Data;
using EPPlusDemo.Services;

namespace EPPlusDemo.Controllers { public class HomeController : Controller { // GET: Home public ActionResult Index() { return View(); }

public ActionResult Export() { var service = new ExportService(); var dataProvider = new LocalDataProvider(); var stream= service.ExportPersionRecords(dataProvider); var memoryStream = stream as MemoryStream;

Response.ContentType = "application/vnd.ms-excel"; Response.AddHeader("content-disposition", string.Format("attachment;filename={0}-{1}.xlsx", "员工信息一览表", DateTime.Now.ToString("yyyyMMddHHmmssfff"))); Response.BinaryWrite(memoryStream.ToArray()); Response.End(); return View("index"); } } }

到此,我们的程序部分就全部完成了。按下F5运行WEB应用程序,打开示例下载地址:http://localhost:18620/home/export, 你将得到下载EXCEL的保存提示窗口,如下: 保存文件

点击 "OK",将EXCEL文件保存到本地,打开保存的EXCEL文件,你将看到我们的示例数据已在EXCEL中了。 EXCEL示例数据

 

转载请注明:图享网 » C#/.NET使用EPPlus组件导出数据到EXCEL表格并下载到本地的示例

验证码