这是一个基于 NPOI 的 Excel 模版引擎, 可以将 Excel 表格映射到 .Net 类实体,支持 混排、导入和导出双向模版 以及 错误信息管理。
什么是 Form ?什么是 Table ?
这是 Form ↓↓,每个数据基本上对应固定的单元格:
这是 Table ↓↓,映射的是一个集合,只有确定的列,没有固定的行:
这是混排 ↓↓,两种需要完全不同处理逻辑的东西混杂在一起:
单纯的 Form 或 Table,处理起来还是比较简单的。而当两者混排起来的话,就会变得稍微复杂一点。因为对于 Table 来说,通常情况下数据量是变化的,也就是说,在 Excel 表格里的实际占用的纵向高度是随着实际情况变化的,排在表格底下的其他数据,必然要被挤到更下面的空间,这使得模版设计时所指定的坐标,无论是 Form 还是 Table ,都不是固定不变的,这就要求必须拥有一定的自适应能力。
本项目支持混排,但必须要注意的是,因为混排的情况比较复杂,实在无法做到支持任何形式的混排。所以这里的混排是有一定的限制的,只支持 “垂直方向的混排”,在水平方向上,不能同时出现 Form 和 Table,因为 Table 的动态伸缩特点,实在难以跟 Form 兼容。
同一个模版,同时支持导入和导出,不需要纠结区分 导入模版 还是 导出模版,这在使用起来是比较省心的,但同时也是一种约束。约束了 导出 功能不可以放飞自我了,因为导出过于酷炫的话,就会使得 导入 变成一场灾难。
这是一个非常重要且有用的功能,也是我决定自己动手造轮子的一个重要推动力。
对于导入功能,我们经常需要对数据进行校验,而校验失败的数据,输出错误提示时最好定位到具体的单元格坐标。这时会存在一个两难的局面,那就是我们把 Excel 映射到实体后,更希望直接使用实体字段来进行后续的操作,但又因为错误提示需要获取所对应的 Excel 单元格坐标,我们不得不回归手动操作 Excel 或者 手动计算坐标,自动化变成了手动,写代码体验实在不太好。
而这里,我们可以以一种 简单 且 直观 的方式进行错误信息的录入,使用 lambda 表达式的形式,模版引擎会自动计算对应的单元格坐标:
builder.For(a => a.Name).AddMessage("名称错误");详见 错误提示管理
详见 使用示例


