当前位置: 首页 > web >正文

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中。

5.模板制作

6.结果 

http://www.xdnf.cn/news/12368.html

相关文章:

  • AndroidR车机TextToSpeech音频焦点异常问题分析
  • 搭建前后端分离项目
  • 云服务器宕机或自动重启怎么办
  • DeepSeek提示词撰写心得
  • 什么是零拷贝?
  • ubuntu屏幕复制
  • 简易EPOLL模型
  • 【地址区间划分】
  • 009-libb64 迅速上手 libb64 -C++开源库108杰
  • jar包如何引入
  • 汇川变频器MD600S-4T-5R5为什么要搭配GRJ9000S-10-T滤波器?
  • 使用 CMAKE_DEBUG_TARGET_PROPERTIES调试目标属性
  • ml307 二次开发
  • 阶段技术问答题目
  • 执行什么命令可以让内存使用率达到80%
  • STM32寄存器访问位宽确实存在16位和32位的混合情况但地址上一定要4字节对齐
  • 智慧照明:集中控制器、单双灯控制器与智慧灯杆网关的高效协同
  • 轻松掌控硬件接口:LuatIO可视化工具,物联网开发的“效率加速器”!
  • PS如何傻瓜式扣图、图片编辑、图片合成
  • 2025.5.28【33OJ NOI 模拟赛 T3】字符串(AC自动机, 字符串后缀结构)
  • [蓝桥杯]耐摔指数
  • World of Warcraft [Vault of Archavon][Reins of the Grand Black War Mammoth]
  • 导航路径优化(一)——平滑
  • Docker MCP 目录和工具包简介:使用 MCP 为 AI 代理提供支持的简单安全方法
  • Java 中比较两个 long 类型变量大小的方法
  • 从Gartner报告看Atlassian在生成式AI领域的创新路径与实践价值
  • Compose Multiplatform 实现自定义的系统托盘,解决托盘乱码问题
  • 电路设计基础-3
  • C# 委托UI控件更新例子,何时需要使用委托
  • leetcode1519. 子树中标签相同的节点数- medium