首页 > 代码库 > OfficeOpenXml.Entends 根据模板导出Excel

OfficeOpenXml.Entends 根据模板导出Excel

OfficeOpenXml.Entends 是一个OfficeOpenXml拓展,用于根据模板输出excel,依赖于EPPlus(码农一致好评,其API操作及友好程度要高于 NPOI),可以直接在NuGet中获取

OfficeOpenXml.Entends 1.0.1.0 用法介绍,直接上代码吧

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using OfficeOpenXml;
 5 using System.IO;
 6 using OfficeOpenXml.Extends;
 7 
 8 namespace Test
 9 {
10   class Program
11   {
12     static void Main(string[] args)
13     {
14       FileInfo info = new FileInfo("tpl.xlsx");
15       ExcelPackage packet = new ExcelPackage(info);
16       var book = packet.Workbook;
17 
18       Random random = new Random();
19 
20       Dictionary<string, IEnumerable<string>> dic = new Dictionary<string, IEnumerable<string>>();
21       dic.Add("水果", new string[] { "桃子", "李子", "香蕉", "" });
22       dic.Add("蔬菜", new string[] { "青菜", "土豆", "黄瓜", "啤酒" });
23 
24       //构造model
25       var model = new
26       {
27         ProjectName = "灰太狼",
28         Name = "Jeff",
29         CreatedAt = DateTime.Now,
30         BuyerName = "Bill",
31         Cates = dic.Select(m => new
32         {
33           Name = m.Key,
34           Items = m.Value.Select(n => new
35           {
36             Name = n,
37             Price = (decimal)random.Next(1, 100),
38             Amount = random.Next(1, 100)
39           })
40         })
41       };
42 
43       //下面的FillModel就是OfficeOpenXml.Extends提供的拓展方法, 1.0.1.0也就只有这个拓展方法
44       book.Worksheets.First().FillModel(model);
45 
46       packet.SaveAs(new FileInfo(DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx"));
47     }
48   }
49 }

 

 下面是xls模板

技术分享

 

 

excel模板中,将第一列空余出来作为代码控制列(可以将正常的模板做完之后插入第一列),单元格中使用 { ... } 来输出内容,注意:输出内容中目前不支持运算、方法,进支持 变量、成员。

控制代码目前支持 for 循环,支持嵌套,要用索引时参考单元格A6的写法。

下面是输出的excel

技术分享

 

输出excel是不是省事了很多,不用在代码里面再写合并单元格。。样式。。边框等等了

 

OfficeOpenXml.Entends 根据模板导出Excel