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

相关推荐
Moment几秒前
富文本编辑器技术选型,到底是 Prosemirror 还是 Tiptap 好 ❓❓❓
前端·javascript·面试
南行*4 分钟前
C语言Linux环境编程
linux·c语言·开发语言·网络安全
xkxnq5 分钟前
第二阶段:Vue 组件化开发(第 18天)
前端·javascript·vue.js
Morwit6 分钟前
Qt qml创建c++类的单例对象
开发语言·c++·qt
晓得迷路了7 分钟前
栗子前端技术周刊第 112 期 - Rspack 1.7、2025 JS 新星榜单、HTML 状态调查...
前端·javascript·html
古城小栈8 分钟前
Rust 已经自举,却仍需GNU与MSVC工具链的缘由
开发语言·rust
怕浪猫9 分钟前
React从入门到出门 第五章 React Router 配置与原理初探
前端·javascript·react.js
jarreyer13 分钟前
数据项目分析标准化流程
开发语言·python·机器学习
鹏多多16 分钟前
前端2025年终总结:借着AI做大做强再创辉煌
前端·javascript
你怎么知道我是队长16 分钟前
C语言---printf函数使用详细说明
c语言·开发语言