项目概述
MiniWord 是一个功能强大且易于使用的 .NET Word 模板导出引擎,适用于各种需要动态生成 Word 文档的场景。其跨平台、无需 Office 依赖、简单易用的特点使得它成为开发者理想的文档生成工具。

应用场景
MiniWord 适用于需要动态生成 Word 文档的各种场景,包括但不限于:
- 报告生成:根据数据库查询结果或业务逻辑动态生成报告。
- 数据导出:将应用程序中的数据导出为 Word 文档,便于分享和打印。
功能模块
MiniWord 主要包含以下几个功能模块:
模板引擎
- 模板设计:用户可以使用 Word 设计模板,通过特定的标签占位符来标记需要动态替换的内容。
- 数据绑定:支持将数据模型绑定到模板中的标签,实现数据的动态替换。
数据替换
- 文本替换:支持简单的文本替换,将模板中的标签替换为实际的数据值。
- 图片替换:支持将模板中的图片标签替换为实际的图片。
- 列表和表格:支持将数组或列表数据绑定到模板中的列表或表格,实现动态生成多行内容。
- 条件判断:支持在模板中使用条件判断语句,根据数据值决定是否显示某些内容。
- 循环:支持在模板中使用循环语句,动态生成重复的内容块。
输出格式
- 文件输出:支持将生成的 Word 文档保存为文件。
- 字节数组输出:支持将生成的 Word 文档转换为字节数组,便于在网络中传输或存储在数据库中。
- 流输出:支持将生成的 Word 文档写入到流中,便于直接响应 HTTP 请求。
快速入门
模板遵循“所见即所得”的设计,模板和标签的样式会被完全保留
var value = new Dictionary<string, object>(){["title"] = "Hello MiniWord"};
MiniSoftware.MiniWord.SaveAsByTemplate(outputPath, templatePath, value);

表格替换
标签值为 IEmerable<Dictionary<string,object>>类别
代码例子:
var value = new Dictionary<string, object>()
{
["TripHs"] = new List<Dictionary<string, object>>
{
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<MiniWordForeach> 类别. 使用方式{{foreach 和 endforeach}}.
var value = new Dictionary<string, object>()
{
["TripHs"] = new List<Dictionary<string, object>>
{
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<MiniWordForeach>()
{
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);

源码地址
https://gitee.com/dotnetchina/MiniWord
阅读原文:原文链接
该文章在 2026/2/14 17:32:13 编辑过