目录
1.官方文档
2. 把要导出的数据new一个匿名对象
3.导出
4.注意事项
5.模板制作
6.结果
1.官方文档
https://gitee.com/dotnetchina/MiniExcel/#%E6%A8%A1%E6%9D%BF%E5%A1%AB%E5%85%85-excel
// 1. By POCO
var value = new
{
Name = "Jack",
CreateDate = new DateTime(2021, 01, 01),
VIP = true,
Points = 123
};
MiniExcel.SaveAsByTemplate(path, templatePath, value);
// 2. By Dictionary
var value = new Dictionary<string, object>()
{
["Name"] = "Jack",
["CreateDate"] = new DateTime(2021, 01, 01),
["VIP"] = true,
["Points"] = 123
};
MiniExcel.SaveAsByTemplate(path, templatePath, value);
2. 把要导出的数据new一个匿名对象
var value = new
{
list = query,
ReceivableAmount = receivableAmount,
FeeAmount = feeAmount,
TransactionAmount = transactionAmount,
ReceivedAmount = receivedAmount,
};
3.导出
//IWebHostEnvironment 提供对应用的环境信息访问,包括网站根目录和内容根目录
IWebHostEnvironment webHostEnvironment (IWebHostEnvironment)App.ServiceProvider.GetService(typeof(IWebHostEnvironment));
//生成动态文件名
string sFileName = $"{"文件路径"}{DateTime.Now:MM-dd-HHmmss}.xlsx";
//拼接目标文件路径 D:\your_project\wwwroot\export\文件路径06-15-113045.xlsx
string path = Path.Combine(webHostEnvironment.WebRootPath, "export", sFileName);
//拼接模板文件路径
var templatePath = Path.Combine(webHostEnvironment.WebRootPath, "export", "收支明细.xlsx");
//确保文件路径所在的目录存在
Directory.CreateDirectory(Path.GetDirectoryName(path));
//根据指定的模板文件路径和提供的数据,将数据保存到目标文件路径path
MiniExcel.SaveAsByTemplate(path, templatePath, value);
//浏览器右上角下载
return ExportExcel(path, sFileName);
//ExportExcel方法详解
protected IActionResult ExportExcel(string path, string fileName)
{
//将文件流作为HTTP响应返回给客户端,通常用于文件下载。
var stream = ff.File.OpenRead(path);
//MIME类型,指定返回文件的类型。这里表示的是Excel文件(.xlsx),对文件名进行URL编码,以确保文件名在URL中正确传输,避免因特殊字符导致的问题。
return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", HttpUtility.UrlEncode(fileName));
}
4.注意事项
1.把要导出的属性加上ExcelColumn
[ExcelColumn(Name = "交易类型")]
public string transType { get; set; }
2.模板导出时一定要,自己首先做好模板的样式,保存在上面的templatePath中。