Excel转pdf实现动态数据绑定
灵感来自于前端开发的插值语法:<span>Message: {{ msg }}</span>。使用Excel作为报表编辑器,实现pdf报表的输入和归档,是一个不错的主意。
定义一个Excel模板,绑定数据模型Model,在单元格中插入类似于这样的语法{{ m.Name }}。解析Excel的每个sheet,遍历单元格,求值后渲染到pdf上。
1. 实现了单元格合并的编排逻辑
2. 实现了绑定数据列表的语法,自动向下扩展
3. 使用JS语法实现数据绑定
4. 实现了插入图片
5. 实现了自动分页/手动分页
6. 实现了页眉和页脚
7. 实现了固定表头
8. 实现了多个sheet组合成一个pdf
下面的a.xlsx模板定义,后面是生成的pdf文件
using ExReport;XPage page = new XPage();
page.Model = new
{Desp = "测试升级",Result = "hello 这是一个Result字段",Logo= "https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png",ImageFile = "https://www.topsong.net/img/sign.png",Todos = new[] {new { Name="任务1",Desp="肝主疏泄,调节全身气机,影响情绪、消化、气血运行等。肝经通畅则情绪舒畅,气机调达。" },new { Name="任务2",Desp="肝主疏泄,调节全身气机,影响情绪、消化、气血运行等。肝经通畅则情绪舒畅,气机调达。" },new { Name="任务3",Desp="肝主疏泄,调节全身气机,影响情绪、消化、气血运行等。肝经通畅则情绪舒畅,气机调达。" },new { Name="任务4",Desp="肝经起于足大趾外侧(大敦穴),沿足背向上,经过内踝前,沿小腿内侧上行至膝内侧,再沿大腿内侧中线进入阴毛中,环绕生殖器,上达小腹,夹胃旁,属肝络胆,继续上行通过膈肌,分布于胁肋部,沿喉咙后方上行至鼻咽部,连接目系(眼与脑相连的组织),最后上达前额与督脉会于巅顶。" },new { Name="任务5",Desp="肝有贮藏和调节血液的功能,肝经与月经、筋脉活动密切相关。" },new { Name="任务6",Desp="肝经起于足大趾外侧(大敦穴),沿足背向上,经过内踝前,沿小腿内侧上行至膝内侧,再沿大腿内侧中线进入阴毛中,环绕生殖器,上达小腹,夹胃旁,属肝络胆,继续上行通过膈肌,分布于胁肋部,沿喉咙后方上行至鼻咽部,连接目系(眼与脑相连的组织),最后上达前额与督脉会于巅顶。" },new { Name="任务7",Desp="肝有贮藏和调节血液的功能,肝经与月经、筋脉活动密切相关。" },}
};
var pdf= await page.RenderPdf("a.xlsx");
pdf.Save("report.pdf");Console.WriteLine("ok");