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是不是省事了很多,不用在代码里面再写合并单元格。。样式。。边框等等了
时间: 2024-11-08 18:59:37