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.结果

相关推荐
To_OC2 小时前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode
To_OC2 小时前
LC 208 实现 Trie 前缀树:曾被名字劝退,写完发现是送分题
javascript·算法·leetcode
天渺工作室3 小时前
实现一个adblock/adblock plus等浏览器广告拦截器检测插件
前端·javascript
kyriewen11 小时前
2026 年了,还在用 Node.js?Bun 迁移实战:20 分钟搞定,附踩坑记录
前端·javascript·node.js
minglie16 小时前
一个置换问题
javascript
默_笙16 小时前
🌀 别再手动写 Prompt 了!我让 AI 自己循环改到满意为止
javascript
To_OC1 天前
LC 994 腐烂的橘子:人人都说是 BFS 入门题,我却写了三遍才过
javascript·算法·leetcode
To_OC1 天前
LC 200 岛屿数量:经典 DFS 入门题,我第一次写居然连方向都搞错了
javascript·算法·leetcode
labixiong1 天前
实现一个能跑的迷你版Promise(一)
前端·javascript·面试
weedsfly2 天前
还在用 Axios?你可能需要重新理解 XHR 与 Fetch
前端·javascript·面试