MiniExcel模板填充Excel导出

目录

1.官方文档

[2. 把要导出的数据new一个匿名对象](#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

cs 复制代码
// 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一个匿名对象

cs 复制代码
 var value = new
 {
     list = query,
     ReceivableAmount = receivableAmount,
     FeeAmount = feeAmount,
     TransactionAmount = transactionAmount,
     ReceivedAmount = receivedAmount,
 };

3.导出

cs 复制代码
//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);
cs 复制代码
//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

cs 复制代码
 [ExcelColumn(Name = "交易类型")]
 public string transType { get; set; }

2.模板导出时一定要,自己首先做好模板的样式,保存在上面的templatePath中。

5.模板制作

6.结果

相关推荐
....4921 小时前
Vue3 + Element Plus 实现可搜索、可折叠、可拖拽的部门树组件
前端·javascript·vue.js
科大饭桶1 小时前
C++入门自学Day11-- String, Vector, List 复习
c语言·开发语言·数据结构·c++·容器
范范之交1 小时前
JavaScript基础语法two
开发语言·前端·javascript
Felven1 小时前
C. Game of Mathletes
c语言·开发语言
点云SLAM1 小时前
C++中内存池(Memory Pool)详解和完整示例
开发语言·c++·内存管理·内存池·new/delete·malloc/free
bitbitDown2 小时前
重构缓存时踩的坑:注释了三行没用的代码却导致白屏
前端·javascript·vue.js
xiaopengbc2 小时前
火狐(Mozilla Firefox)浏览器离线安装包下载
前端·javascript·firefox
程高兴2 小时前
遗传算法求解冷链路径优化问题matlab代码
开发语言·人工智能·matlab
wow_DG2 小时前
【C++✨】多种 C++ 解法固定宽度右对齐输出(每个数占 8 列)
开发语言·c++·算法
小高0072 小时前
🔥🔥🔥前端性能优化实战手册:从网络到运行时,一套可复制落地的清单
前端·javascript·面试