public class FileViewModel { public MemoryStream FileStream { get; set; } public string ContentType { get; set; } public string FileName { get; set; } } public ActionResult ExportToExcel() { var package = new ExcelPackage();//是一个epplus中的类 var worksheet = package.Workbook.Worksheets.Add("Sheet1");//Workbook 是 Excel 工作簿,Worksheets 是工作簿中的工作表集合 // 添加表头 cell代表表格或单元格 worksheet.Cells[1, 1].Value = "姓名"; worksheet.Cells[1, 2].Value = "年龄"; worksheet.Cells[1, 3].Value = "性别"; // 添加数据 worksheet.Cells[2, 1].Value = "张三"; worksheet.Cells[2, 2].Value = 20; worksheet.Cells[2, 3].Value = "男"; worksheet.Cells[3, 1].Value = "李四"; worksheet.Cells[3, 2].Value = 25; worksheet.Cells[3, 3].Value = "女"; // 自适应列宽 worksheet.Cells.AutoFitColumns(); // 导出 Excel 文件 var fileStream = new MemoryStream(package.GetAsByteArray()); var fileName = "export.xlsx"; var contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; return View(new FileViewModel { FileStream = fileStream, ContentType = contentType, FileName = fileName }); }视图里面改、该如何写
时间: 2023-05-17 18:03:30 浏览: 157
C# 字符串string和内存流MemoryStream及比特数组byte[]之间相互转换
对于这个问题,你可以在视图中使用 Razor 语法来输出文件流,如下所示:
@model FileViewModel
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>@Model.FileName</title>
</head>
<body>
<a href="@Url.Action("ExportToExcel")">Download Excel</a>
</body>
</html>
在这个视图中,我们使用了 @model 指令来指定视图的模型类型为 FileViewModel。然后,我们使用 Razor 语法来输出文件流,如下所示:
<a href="@Url.Action("ExportToExcel")">Download Excel</a>
这个链接会调用 ExportToExcel 方法,并返回一个文件流。在这个方法中,我们创建了一个 ExcelPackage 对象,并向其中添加了一个工作表。然后,我们向工作表中添加了表头和数据,并自适应列宽。最后,我们将 Excel 文件导出为一个文件流,并将其包装在一个 FileViewModel 对象中,以便在视图中使用。
阅读全文