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

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.lryc.cn/news/2403012.html

相关文章:

  • NoSQL之redis哨兵
  • MCP协议重构AI Agent生态:万能插槽如何终结工具孤岛?
  • 阿里云事件总线 EventBridge 正式商业化,构建智能化时代的企业级云上事件枢纽
  • CentOS8.3+Kubernetes1.32.5+Docker28.2.2高可用集群二进制部署
  • 学习日记-day23-6.6
  • Pytorch安装后 如何快速查看经典的网络模型.py文件(例如Alexnet,VGG)(已解决)
  • 《ERP原理与应用教程》第3版习题和答案
  • JavaScript中的正则表达式:文本处理的瑞士军刀
  • vue对axios的封装和使用
  • 软考 系统架构设计师系列知识点之杂项集萃(82)
  • DrissionPage调试工具:网页自动化与数据采集的革新利器
  • 有人-无人(人机)交互记忆、共享心智模型与AI准确率的边际提升
  • 如何使用k8s安装redis呢
  • AI对测试行业的应用
  • 【OpenGL学习】(五)自定义着色器类
  • 408第一季 - 数据结构 - 栈与队列的应用
  • 超声波清洗设备的清洗效果如何?
  • k8s部署dify
  • “草台班子”的成长路径分析
  • RAG技术解析:实现高精度大语言模型知识增强
  • 软件测评服务如何依据标准确保品质?涵盖哪些常见内容?
  • 大数据学习(131)-Hive数据分析函数总结
  • SCAU数值计算OJ
  • c++ 基于openssl MD5用法
  • Python打卡第46天
  • Unity优化篇之DrawCall
  • SpringCloud学习笔记-2
  • C++.OpenGL (9/64)复习(Review)
  • Spring Boot-面试题(52)
  • 从混乱到秩序:探索管理系统如何彻底改变工作流程