在项目中对于word文件的操作大多需要使用微软的依赖或是WPS或使用其他收费应用,在使用过程中不可避免的问题能够浪费开发者的大量时间,所以才有了此教程。首先,教程中只写了一个功能“建好word模板文件后,存在占位后进行填充数据”。
环境:.Net6.0
步骤一:创建好word模板文件.docx 文件。
占位符语法:
// 两个英文半角的大括号,中间写英文半角字母的占位符名称,
{{time}}
{{age}}
{{address}}
示例:
步骤二:创建项目,引入MiniWord
MiniWord .NET Word模板引擎,藉由Word模板和数据简单、快速生成文件。
Nuget :
https://www.nuget.org/packages/MiniWord
项目地址:
Gitee : https://gitee.com/dotnetchina/MiniWord
详细使用查看注释,其中不支持特殊表情等 例如:🍎
// See https://aka.ms/new-console-template for more information
using System.Diagnostics;
Console.WriteLine("Hello, World!");
// 填充的数据对用模板中的书签名称,例如:{{time_period}}
var value = new Dictionary<string,object>()
{
["time_period"] = "2023-07-17至2023-07-21",
["grade_class"] = "大班-一班",
// 周一
["teach_name_0"] = "邹玉",
["content_0"] ="我与父亲不相见已二年余了,我最不能忘记的是他的背影。那年冬天,祖母死了,父亲的差使也交卸了,正是祸不单行的日子,我从北京到徐州,打算跟着父亲奔丧回家。到徐州见着父亲,看见满院狼藉的东西,又想起祖母,不禁簌簌地流下眼泪。父亲说,“事已如此,不必难过,好在天无绝人之路!”",
["note_0"] = "无",
// 周二
["teach_name_1"] = "陈心",
["content_1"] ="回家变卖典质,父亲还了亏空;又借钱办了丧事。这些日子,家中光景很是惨淡,一半为了丧事,一半为了父亲赋闲。丧事完毕,父亲要到南京谋事,我也要回北京念书,我们便同行。",
["note_1"] = "无",
// 周三
["teach_name_2"] = "菲",
["content_2"] ="到南京时,有朋友约去游逛,勾留了一日;第二日上午便须渡江到浦口,下午上车北去。父亲因为事忙,本已说定不送我,叫旅馆里一个熟识的茶房陪我同去。他再三嘱咐茶房,甚是仔细。但他终于不放心,怕茶房不妥帖;颇踌躇了一会。其实我那年已二十岁,北京已来往过两三次,是没有甚么要紧的了。他踌躇了一会,终于决定还是自己送我去。我两三回劝他不必去;他只说,“不要紧,他们去不好!”",
["note_2"] = "无",
// 周四
["teach_name_3"] = "筠",
["content_3"] ="近几年来,父亲和我都是东奔西走,家中光景是一日不如一日。他少年出外谋生,独力支持,做了许多大事。那知老境却如此颓唐!他触目伤怀,自然情不能自已。",
["note_3"] = "无",
// 周五
["teach_name_4"] = "葛",
["content_4"] ="情郁于中,自然要发之于外;家庭琐屑便往往触他之怒。他待我渐渐不同往日。但最近两年的不见,他终于忘却我的不好,只是惦记着我,惦记着我的儿子。",
["note_4"] = "无",
// 节假日
["holidays"] = "",
["teach_name_5"] = "",
["content_5"] ="",
["note_5"] = "",
};
// 获取当前程序所在目录
var currentDirectory = Directory.GetCurrentDirectory();
// 创建 doc 目录
if(Directory.Exists($"{currentDirectory}/doc") == false)
{
Directory.CreateDirectory($"{currentDirectory}/doc");
}
// 生成文件路径
var outPath = Path.Combine(currentDirectory, "doc", $"{DateTime.Now:yyyy-M-d-HH-mm-ss}.docx");
// 模板路径
var templatePath = Path.Combine(currentDirectory, "1530TeachTemplate.docx");
// 输出信息
Console.WriteLine("数据填充中...");
// 开始计时
var stopwatch = new Stopwatch();
// 开始填充数据
MiniSoftware.MiniWord.SaveAsByTemplate(outPath, templatePath, value);
stopwatch.Stop();
Console.WriteLine($"数据填充完成,耗时:{stopwatch.ElapsedMilliseconds}ms");
Console.WriteLine($"文件保存在:{outPath}");
此处评论已关闭