Magicodes.IE之Excel模板导出教材订购表
说明
本教程主要说明如果使用Magicodes.IE.Excel完成教材订购表的Excel模板导出。
要点
- 本教程使用Magicodes.IE.Excel来完成Excel模板导出
- 需要通过创建Dto来完成导出
- 需要按要求准备Excel模板
主要步骤
1.安装包Magicodes.IE.Excel
在本篇教程中,我们仅演示使用Excel来完成学生数据的导入。我们需要在已准备好的工程中安装以下包,参考命令如下所示:
Install-Package Magicodes.IE.Excel
2.准备模板
Magicodes.IE.Excel模板导出支持单元格渲染和表格渲染:
单元格渲染
语法:
{{Company}} (教学单位名称)2020年春季教材订购明细注意:
- 双大括号是必须的
- 暂不支持表达式等
- 支持子对象属性
- 大小写敏感
- 表格渲染

表格渲染的格式如上所述:
渲染语法以“Table>>BookInfos|”为开始,其中“BookInfos”为列表属性
“RowNo”、“No”等均为列表字段
必须以“|>>Table”结尾
暂不支持一行多个Table(即将支持,具体请查看日志)
根据以上语法,我们可以编写模板如下所示:

3.创建导出Dto
主要代码如下所示:
教材订购信息Dto
/// <summary>
/// 教材订购信息
/// </summary>
public class TextbookOrderInfo
{
/// <summary>
/// 公司名称
/// </summary>
public string Company { get; } /// <summary>
/// 地址
/// </summary>
public string Address { get; } /// <summary>
/// 联系人
/// </summary>
public string Contact { get; } /// <summary>
/// 电话
/// </summary>
public string Tel { get; } /// <summary>
/// 制表人
/// </summary>
public string Watchmaker { get; } /// <summary>
/// 时间
/// </summary>
public string Time { get; } /// <summary>
/// 教材信息列表
/// </summary>
public List<BookInfo> BookInfos { get; } public TextbookOrderInfo(string company, string address, string contact, string tel, string watchmaker, string time, List<BookInfo> bookInfo)
{
Company = company;
Address = address;
Contact = contact;
Tel = tel;
Watchmaker = watchmaker;
Time = time;
BookInfos = bookInfo;
}
}如上述代码所示,定义的结构基本上和模板一致。其中属性BookInfos对应列表,具体定义如下所示。
教材信息Dto:
/// <summary>
/// 教材信息
/// </summary>
public class BookInfo
{
/// <summary>
/// 行号
/// </summary>
public int RowNo { get; } /// <summary>
/// 书号
/// </summary>
public string No { get; } /// <summary>
/// 书名
/// </summary>
public string Name { get; } /// <summary>
/// 主编
/// </summary>
public string EditorInChief { get; } /// <summary>
/// 出版社
/// </summary>
public string PublishingHouse { get; } /// <summary>
/// 定价
/// </summary>
public string Price { get; } /// <summary>
/// 采购数量
/// </summary>
public int PurchaseQuantity { get; } /// <summary>
/// 备注
/// </summary>
public string Remark { get; } public BookInfo(int rowNo, string no, string name, string editorInChief, string publishingHouse, string price, int purchaseQuantity, string remark)
{
RowNo = rowNo;
No = no;
Name = name;
EditorInChief = editorInChief;
PublishingHouse = publishingHouse;
Price = price;
PurchaseQuantity = purchaseQuantity;
Remark = remark;
}
}
4.导出
接下来直接调用Magicodes.IE.Excel封装的模板导出方法,该方法实现自接口IExportFileByTemplate:
/// <summary>
/// 根据模板导出文件
/// </summary>
public interface IExportFileByTemplate
{
/// <summary>
/// 根据模板导出
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="fileName"></param>
/// <param name="data"></param>
/// <param name="template">HTML模板或模板路径</param>
/// <returns></returns>
Task<ExportFileInfo> ExportByTemplate<T>(string fileName, T data,
string template) where T : class;
}
通过以上方法中的ExportByTemplate,我们就可以完成Excel模板导出。具体使用可以参考以下单元测试:
[Fact(DisplayName = "Excel模板导出教材订购明细样表")]
public async Task ExportByTemplate_Test()
{
//模板路径
var tplPath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "ExportTemplates",
"2020年春季教材订购明细样表.xlsx");
//创建Excel导出对象
IExportFileByTemplate exporter = new ExcelExporter();
//导出路径
var filePath = Path.Combine(Directory.GetCurrentDirectory(), nameof(ExportByTemplate_Test) + ".xlsx");
if (File.Exists(filePath)) File.Delete(filePath);
//根据模板导出
await exporter.ExportByTemplate(filePath,
new TextbookOrderInfo("湖南心莱信息科技有限公司", "湖南长沙岳麓区", "雪雁", "1367197xxxx", "雪雁", DateTime.Now.ToLongDateString(),
new List<BookInfo>()
{
new BookInfo(, "", "《XX从入门到放弃》", "张三", "机械工业出版社", "3.14", , "备注"),
new BookInfo(, "", "《XX从入门到放弃》", "张三", "机械工业出版社", "3.14", , "备注"),
new BookInfo(, "", "《XX从入门到放弃》", "张三", "机械工业出版社", "3.14", , "备注")
}),
tplPath);
}
结果如下图所示:

最后
整个Excel模板导出教程就此结束了,由于仓促完成,还有许多地方可以改善并优化。
相关库会一直更新,在功能体验上有可能会和本文教程有细微的出入,请以相关具体代码、版本日志、单元测试示例为准。
编程交流群<85318032>,产品交流群<897857351>。
Magicodes.IE之Excel模板导出教材订购表的更多相关文章
- Excel模板导出之动态导出
说明 目前Magicodes.IE已支持Excel模板导出时使用JObject.Dictionary和ExpandoObject来进行动态导出,具体使用请看本篇教程. 本功能的想法.部分实现初步源于a ...
- java实现excel模板导出
一. 准备工作 1. 点击此下载相关开发工具 2. 将poi-3.8.jxls-core-1.0两个jar包放到工程中,并引用 3. 将excel模板runRecord.xls放到RunRecordB ...
- .Net NPOI 根据excel模板导出excel、直接生成excel
一.根据Excel模板导出excel 1.导入NPOI.dll 2.DAL中添加类ExportExcel.cs using NPOI.SS.UserModel; using System; usin ...
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- kettle 使用excel模板导出数据
通过excel进行高速开发报表: 建设思路: 1.首先制订相关的execl模板. 2.通过etl工具(kettle)能够高速的 将数据库中的数据按excel模板导出成新的excel就可以. 当中ket ...
- C#实现Excel模板导出和从Excel导入数据
午休时间写了一个Demo关于Excel导入导出的简单练习 1.窗体 2.引用office命名空间 添加引用-程序集-扩展-Microsoft.Office.Interop.Excel 3.封装的Exc ...
- Net 自定义Excel模板导出数据
转载自:http://www.cnblogs.com/jbps/p/3549671.html?utm_source=tuicool&utm_medium=referral 1 using Sy ...
- 6、jeecg 笔记之 自定义excel 模板导出(一)
1.前言 jeecg 中已经自带 excel 的导出导出功能,其所使用的是 easypoi,尽管所导出的 excel 能满足大部分需求, 但总是有需要用到自定义 excel 导出模板,下文所用到的皆是 ...
- C# Winform Excel的导出,根据excel模板导出数据
namespace dxhbskymDemo { public partial class ExcelForm : DevExpress.XtraEditors.XtraForm { public E ...
随机推荐
- 2019-6-23-修复-dotnet-Core-缺SDK编译失败
title author date CreateTime categories 修复 dotnet Core 缺SDK编译失败 lindexi 2019-6-23 10:55:9 +0800 2019 ...
- DataTable添加单个或多个字段组成的主键,实现查找
单列主键 DataTable fdt = CmmDb.GetDataTable(orgsql); fdt.PrimaryKey = new DataColumn[] { fdt.Columns[&qu ...
- HTML DOM clearInterval() 方法
定义和用法 clearInterval() 方法可取消由 setInterval() 设置的 timeout. clearInterval() 方法的参数必须是由 setInterval() 返回的 ...
- 手机web页面调用手机QQ实现在线聊天的效果
html代码如下: <a href="javascript:;" onclick="chatQQ()">QQ咨询</a> js代码如下: ...
- H3C通过桥ID决定端口角色
- Linux 内核总线注册
如同我们提过的, 例子源码包含一个虚拟总线实现称为 lddbus. 这个总线建立它的 bus_type 结构, 如下: struct bus_type ldd_bus_type = { .name = ...
- Mybatis 框架
在之前的内容中,我写了Java的基础知识.Java Web的相关知识.有这些内容就可以编写各种各样丰富的程序.但是如果纯粹手写所有代码,工作量仍然很大.为了简化开发,隐藏一些不必要的细节,专心处理业务 ...
- Team Foundation Server 2015使用教程【4】:默认团队权限说明
- 第二阶段:2.商业需求文档MRD:5.MRD-Roadmap及规划
产品路线图可以用泳道图来实现.将之前做过的泳道图的角色换为阶段即可. 可以以月为单位.左边就是一些产品的功能. 基础功能,有的功能会跨月甚至夸功能模块.比如图中的会员等级. 通过线段来联系各个功能与先 ...
- Linux(Centos)安装node及anyproxy
一.安装node //下载 wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz //解压 tar xf node-v1 ...