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

相关推荐
im_AMBER10 分钟前
Leetcode 160 最小覆盖子串 | 串联所有单词的子串
开发语言·javascript·数据结构·算法·leetcode
得想办法娶到那个女人10 分钟前
项目中 TypeScript 类型推导 极简实战总结
前端·javascript·typescript
Rabitebla12 分钟前
【数据结构】动态顺序表实现详解:从原理到接口设计(面试视角)
c语言·开发语言·数据结构·c++·面试·职场和发展
Beginner x_u15 分钟前
前端八股整理(Vue 02)|组件通信、生命周期、v-if 与 v-show
前端·javascript·vue.js
郝学胜-神的一滴21 分钟前
Linux 高并发基石:epoll 核心原理 + LT/ET 触发模式深度剖析
linux·运维·服务器·开发语言·c++·网络协议
A_aspectJ29 分钟前
Java开发的学习优势:稳定基石与多元可能并存的技术赛道
java·开发语言
qq_2837200531 分钟前
Python 模块精讲:collections —— 高级数据结构深度解析(defaultdict、Counter、deque)
java·开发语言
zs宝来了41 分钟前
React 18 并发模式:Fiber 架构与时间切片
前端·javascript·框架
wjs202442 分钟前
Chart.js 饼图指南
开发语言
YSF2017_31 小时前
C语言-12-静态库制作
c语言·开发语言