在ASP.NET MVC中导出Excel有多种方式,以下是其中两种方式的示例:
1.使用EPPlus库生成Excel文件
EPPlus是一个免费开源的库,它可以在服务器端轻松处理Excel文件。
首先我们需要在项目中安装EPPlus NuGet包,然后创建一个ActionResult方法,该方法生成Excel文件并将其作为响应发送给请求方:
public ActionResult ExportToExcel()
{
// 创建Excel工作簿
ExcelPackage package = new ExcelPackage();
// 添加工作表
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1");
// 设置表头
worksheet.Cells[1, 1].Value = "ID";
worksheet.Cells[1, 2].Value = "姓名";
worksheet.Cells[1, 3].Value = "年龄";
// 填充数据
List<Person> persons = GetPersons(); // 获取数据
int row = 2;
foreach (Person person in persons)
{
worksheet.Cells[row, 1].Value = person.ID;
worksheet.Cells[row, 2].Value = person.Name;
worksheet.Cells[row, 3].Value = person.Age;
row++;
}
// 自适应列宽
worksheet.Cells.AutoFitColumns();
// 设置响应头信息
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=persons.xlsx");
// 将Excel文件写入响应流
Response.BinaryWrite(package.GetAsByteArray());
return null;
}
// 数据模型
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
// 获取数据
public List<Person> GetPersons()
{
// 这里可以替换为你自己的数据源
List<Person> persons = new List<Person>()
{
new Person() { ID = 1, Name = "张三", Age = 20 },
new Person() { ID = 2, Name = "李四", Age = 25 },
new Person() { ID = 3, Name = "王五", Age = 30 },
};
return persons;
}
在这个示例中,我们首先创建了一个Excel包,添加了一个工作表,设置表头和数据,并使用自适应列宽自动调整列宽。然后我们设置响应头信息,将Excel文件写入响应流,并将ActionResult返回为空。
2.使用ClosedXML库生成Excel文件
另一个用于在ASP.NET MVC中生成Excel文件的流行库是ClosedXML。它也提供了许多功能和灵活性,可以轻松地生成和处理Excel文件。
首先我们需要在项目中安装ClosedXML NuGet包,然后创建一个ActionResult方法,该方法生成Excel文件并将其作为响应发送给请求方:
public ActionResult ExportToExcel()
{
// 创建Excel工作簿
XLWorkbook workbook = new XLWorkbook();
// 添加工作表
IXLWorksheet worksheet = workbook.Worksheets.Add("Sheet1");
// 设置表头
worksheet.Cell(1, 1).Value = "ID";
worksheet.Cell(1, 2).Value = "姓名";
worksheet.Cell(1, 3).Value = "年龄";
// 填充数据
List<Person> persons = GetPersons(); // 获取数据
int row = 2;
foreach (Person person in persons)
{
worksheet.Cell(row, 1).Value = person.ID;
worksheet.Cell(row, 2).Value = person.Name;
worksheet.Cell(row, 3).Value = person.Age;
row++;
}
// 自适应列宽
worksheet.Columns().AdjustToContents();
// 设置响应头信息
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=persons.xlsx");
// 将Excel文件写入响应流
workbook.SaveAs(Response.OutputStream);
return null;
}
在这个示例中,我们首先创建了一个ClosedXML工作簿,添加了一个工作表,设置表头和数据,并调整了每列的宽度。然后我们设置响应头信息,将Excel文件写入响应流,并将ActionResult返回为空。
两种方式都能轻松地在ASP.NET MVC中生成Excel文件,并将其作为响应发送给请求方。你可以根据项目需求和个人偏好选择其中一种方式。