在项目中对于word文件的操作大多需要使用微软的依赖或是WPS或使用其他收费应用,
在使用过程中不可避免的问题能够浪费开发者的大量时间,
所以才有了此教程。
首先,
教程中只写了一个功能“建好word模板文件后,存在占位后进行填充数据”。

环境:.Net6.0

步骤一:创建好word模板文件.docx 文件。

占位符语法:

// 两个英文半角的大括号,中间写英文半角字母的占位符名称,
{{time}}
{{age}}
{{address}}

示例:WordTemplate

步骤二:创建项目,引入MiniWord

MiniWorld

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}");

结果

show

最后修改:2023 年 08 月 01 日
如果觉得我的文章对你有用,请随意赞赏