MiniWord .NET Word介绍MiniWord .NET Word模板引擎,藉由Word模板和数据简单、快速生成文件。
Getting Started安装• nuget link : https://www.nuget.org/packages/MiniWord
快速入门模板遵循“所见即所得”的设计,模板和标签的样式会被完全保留
var value = new Dictionary<string, object>(){["title"] = "Hello MiniWord"};MiniSoftware.MiniWord.SaveAsByTemplate(outputPath, templatePath, value);
输入、输出• 输入系统支持模版路径或是Byte[]
• 输出支持文件路径、Byte[]、Stream
SaveAsByTemplate(string path, string templatePath, Dictionary<string, object> value)SaveAsByTemplate(string path, byte[] templateBytes, Dictionary<string, object> value)SaveAsByTemplate(this Stream stream, string templatePath, Dictionary<string, object> value)SaveAsByTemplate(this Stream stream, byte[] templateBytes, Dictionary<string, object> value)
标签MiniWord 使用类似 Vue, React 的模版字串
{{tag}},只需要确保 tag 与 value 参数的 key 一样
(大小写敏感)
,系统会自动替换字串。
文本{{tag}}
代码例子var value = new Dictionary<string, object>(){ ["Name"] = "Jack", ["Department"] = "IT Department", ["Purpose"] = "Shanghai site needs a new system to control HR system.", ["StartDate"] = DateTime.Parse("2022-09-07 08:30:00"), ["EndDate"] = DateTime.Parse("2022-09-15 15:30:00"), ["Approved"] = true, ["Total_Amount"] = 123456,};MiniWord.SaveAsByTemplate(path, templatePath, value);
模版导出图片代码例子var value = new Dictionary<string, object>(){ ["Logo"] = new MiniWordPicture() { Path= PathHelper.GetFile("DemoLogo.png"), Width= 180, Height= 180 }};MiniWord.SaveAsByTemplate(path, templatePath, value);
模版导出列表代码例子var value = new Dictionary<string, object>(){ ["managers"] = new[] { "Jack" ,"Alan"}, ["employees"] = new[] { "Mike" ,"Henry"},};MiniWord.SaveAsByTemplate(path, templatePath, value);
模版导出表格代码例子var value = new Dictionary<string, object>(){ ["TripHs"] = new Liststring[ span], object[="" span]="">> { new Dictionary<string, object> { { "sDate",DateTime.Parse("2022-09-08 08:30:00")}, { "eDate",DateTime.Parse("2022-09-08 15:00:00")}, { "How","Discussion requirement part1"}, { "Photo",new MiniWordPicture() { Path = PathHelper.GetFile("DemoExpenseMeeting02.png"), Width = 160, Height = 90 }}, }, new Dictionary<string, object> { { "sDate",DateTime.Parse("2022-09-09 08:30:00")}, { "eDate",DateTime.Parse("2022-09-09 17:00:00")}, { "How","Discussion requirement part2 and development"}, { "Photo",new MiniWordPicture() { Path = PathHelper.GetFile("DemoExpenseMeeting01.png"), Width = 160, Height = 90 }}, }, }};MiniWord.SaveAsByTemplate(path, templatePath, value);
模版导出二级列表Tag 是
IEnumerable
类别. 使用方式
{{foreach 和
endforeach}}
.
Examplevar value = new Dictionary<string, object>(){ ["TripHs"] = new Liststring[ span], object[="" span]="">> { new Dictionary<string, object> { { "sDate", DateTime.Parse("2022-09-08 08:30:00") }, { "eDate", DateTime.Parse("2022-09-08 15:00:00") }, { "How", "Discussion requirement part1" }, { "Details", new List() { new MiniWordForeach() { Value = new Dictionary<string, object>() { {"Text", "Air"}, {"Value", "Airplane"} }, Separator = " | " }, new MiniWordForeach() { Value = new Dictionary<string, object>() { {"Text", "Parking"}, {"Value", "Car"} }, Separator = " / " } } } } }};MiniWord.SaveAsByTemplate(path, templatePath, value);
TemplateResult条件判断Examplevar value = new Dictionary<string, object>(){ ["Name"] = new List(){ new MiniWordHyperLink(){ Url = "https://google.com", Text = "測試連結22!!" }, new MiniWordHyperLink(){ Url = "https://google1.com", Text = "測試連結11!!" } }, ["Company_Name"] = "MiniSofteware", ["CreateDate"] = new DateTime(2021, 01, 01), ["VIP"] = true, ["Points"] = 123, ["APP"] = "Demo APP",};MiniWord.SaveAsByTemplate(path, templatePath, value);
TemplateResult多彩字体代码例子var value = new{ Company_Name = new MiniWordColorText { Text = "MiniSofteware", FontColor = "#eb70AB", }, Name = new[] { new MiniWordColorText { Text = "Ja", HighlightColor = "#eb70AB" }, new MiniWordColorText { Text = "ck", HighlightColor = "#a56abe" } }, CreateDate = new MiniWordColorText { Text = new DateTime(2021, 01, 01).ToString(), HighlightColor = "#eb70AB", FontColor = "#ffffff", }, VIP = true, Points = 123, APP = "Demo APP",};MiniWord.SaveAsByTemplate(path, templatePath, value);
其他POCO or dynamic 参数v0.5.0 支持 POCO 或 dynamic parameter
var value = new { title = "Hello MiniWord" };MiniWord.SaveAsByTemplate(outputPath, templatePath, value);
字体FontColor和HighlightColorvar value = new{ Company_Name = new MiniWordColorText { Text = "MiniSofteware", FontColor = "#eb70AB" }, Name = new MiniWordColorText { Text = "Jack", HighlightColor = "#eb70AB" }, CreateDate = new MiniWordColorText { Text = new DateTime(2021, 01, 01).ToString(), HighlightColor = "#eb70AB", FontColor = "#ffffff" }, VIP = true, Points = 123, APP = "Demo APP",};
HyperLink我们可以尝试使用
MiniWodrHyperLink
类,用模板测试替换为超链接。
MiniWordHyperLink
提供了两个主要参数。
• Url: HyperLink URI 目标路径
• 文字:超链接文字
var value = new { ["Name"] = new MiniWordHyperLink(){ Url = "https://google.com", Text = "測試連結!!" }, ["Company_Name"] = "MiniSofteware", ["CreateDate"] = new DateTime(2021, 01, 01), ["VIP"] = true, ["Points"] = 123, ["APP"] = "Demo APP",};MiniWord.SaveAsByTemplate(path, templatePath, value);
项目地址文档地址:https://github.com/mini-software/MiniWord
推荐阅读欢迎关注我的公众号“Net分享”,技术文章第一时间推送,随缘更新 , 分享一些你可能注意不到的细节。