MiniExcel模板填充Excel导出
目录
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中。