在 word 文档的段落开头、中部和最后添加日期域,能够实现动态时间戳的嵌入,使得文档内容能够根据打开或打印文档的时间自动更新日期。在段落开头添加日期域,可以快速标注文档创建或更新时间;在段落中部插入,则可用于记录特定事件的发生日期;而在段落尾部添加,常见于k8凯发天生赢家的版权声明、修订记录或作为时间戳证明文档的完整性。本文将介绍如何使用 spire.doc for .net 在 c# 项目中在 word 文档段落开头、中部和最后添加日期域。
安装 spire.doc for .net
首先,您需要将 spire.doc for.net 包含的 dll 文件作为引用添加到您的 .net 项目中。dll 文件可以从此链接下载,也可以通过 安装。
pm> install-package spire.doc
c# 在 word 文档段落开头插入日期域
为了实现在 word 文档的段落开头精准插入日期域的目标,需要利用 paragraph.childobjects.insert(0, datefield) 方法将自定义的日期字段 datefield 插入到 paragraph 对象的 childobjects 集合的起始位置(索引0),即可确保日期域是出现在段落的最前端。以下是详细的步骤:
- 创建一个新的 document 实例。
- 使用 document.loadfromfile() 方法从文件系统中加载一个word文档。
- 通过 document.sections[0] 访问文档的第一个 section 对象。
- 通过 section.body.paragraphs[0] 访问章节主体内的第一个 paragraph 对象。
- 提取源文本的字符格式 characterformat 对象。
- 创建一个新的 field 对象,并设定其类型为日期字段 fieldtype.fielddate。
- 定义日期字段的显示格式为 "yyyy年mm月dd日"。
- 将前面提取的字符格式应用于日期字段。
- 修改日期字段的字符格式,使字体变为加粗。
- 在段落的开始处插入创建好的日期字段。
- 通过 document.createparagraphitem(paragraphitemtype.fieldmark) 创建一个字段标记并设置其类型为结束标记 fieldmarktype.fieldend。
- 紧接着日期字段之后,在段落中插入字段结束标记。
- 将字段结束标记与日期字段进行关联。
- 设置 document.isupdatefields 为 true,确保文档中的所有字段得到更新。
- 使用 document.savetofile() 方法将修改保存到文档。
- c#
using spire.doc;
using spire.doc.documents;
using spire.doc.fields;
using spire.doc.formatting;
namespace spiredocdemo
{
internal class program
{
static void main(string[] args)
{
// 创建一个新的文档对象
document document = new document();
// 从文件加载文档
document.loadfromfile("示例01.docx");
// 获取文档的第一个章节
section section = document.sections[0];
// 获取章节主体的第一个段落
paragraph paragraph = section.body.paragraphs[0];
// 创建一个字符格式对象
characterformat charaterformat = new characterformat(document);
for (int i = 0; i < paragraph.childobjects.count; i )
{
// 检查段落子对象是否为文本范围
if (paragraph.childobjects[i].documentobjecttype == documentobjecttype.textrange)
{
// 设置字符格式为当前文本范围的格式
charaterformat = ((textrange)paragraph.childobjects[i]).characterformat;
break;
}
}
// 创建一个日期字段
field datefield = new field(document);
datefield.type = fieldtype.fielddate;
// 设置字段代码,以显示日期格式为"yyyy年mm月dd日"
datefield.code = @"date \@ " "\"yyyy年mm月dd日\" ";
// 应用之前获取的字符格式到日期字段
datefield.applycharacterformat(charaterformat);
// 设置日期字段的字体加粗
datefield.characterformat.bold = true;
// 在段落开始处插入日期字段
paragraph.childobjects.insert(0, datefield);
// 创建字段结束标记
fieldmark fieldend = (fieldmark)document.createparagraphitem(paragraphitemtype.fieldmark);
fieldend.type = fieldmarktype.fieldend;
// 在段落中插入字段结束标记
paragraph.childobjects.insert(1, fieldend);
// 设置日期字段的结束标记
datefield.end = fieldend;
// 更新文档中的所有字段
document.isupdatefields = true;
// 将文档保存到新的文件
document.savetofile("在段落开头插入日期域.docx", fileformat.docx);
// 释放文档对象所占用的资源
document.dispose();
}
}
}
c# 在 word 文档段落中插入日期域
为了在段落中精确地插入日期域,首先得锁定其具体位置。这一过程通常是基于对文档中特定目标文本的定位来实现的。换句话说,我们先寻找一个已知的文本标记:例如“发货”作为参照点,然后在此标记前方无缝嵌入日期域,从而确保其准确无误地出现在预期位置上。以下是详细的步骤:
- 创建一个新的 document 实例。
- 使用 document.loadfromfile() 方法从文件系统中加载一个 word 文档。
- 使用 document.findstring() 方法搜索目标文本 textselection 对象。
- 通过 textselection.getasonerange() 方法获取搜索结果的文本范围。
- 从文本范围中提取其字符格式,以便后续应用到插入的日期字段上。
- 使用 textrange.ownerparagraph 属性确定文本范围所在的段落。
- 利用 paragraph.childobjects.indexof(textrange) 方法找到文本范围在段落中的相对位置,以确定插入日期字段的具体位置。
- 创建一个新的 field 对象,类型设为 fieldtype.fielddate,用于插入日期。
- 定义日期字段的代码,设置显示格式为 "yyyy年mm月dd日"。
- 在段落的适当位置(在找到的文本之前)插入日期字段。
- 在段落中,在日期字段后插入字段结束标记。
- 将字段结束标记关联到日期字段上,完成字段定义。
- 设置 document.isupdatefields 属性为 true,确保文档中的所有字段得到更新。
- 使用 document.savetofile() 方法将修改保存到文档。
- c#
using spire.doc;
using spire.doc.documents;
using spire.doc.fields;
using spire.doc.formatting;
namespace spiredocdemo
{
internal class program
{
static void main(string[] args)
{
// 创建一个新的文档对象
document document = new document();
// 从文件加载文档
document.loadfromfile("示例02.docx");
// 查找文档中的字符串
textselection textselection = document.findstring("发货", false, false);
// 获取找到的文本范围
textrange textrange = textselection.getasonerange();
// 获取文本范围的字符格式
characterformat charaterformat = textrange.characterformat;
// 获取文本范围所属的段落
paragraph paragraph = textrange.ownerparagraph;
// 获取文本范围在段落中的位置索引
int index = paragraph.childobjects.indexof(textrange);
// 创建一个日期字段
field datefield = new field(document);
datefield.type = fieldtype.fielddate;
// 设置字段代码,以显示日期格式为"yyyy年mm月dd日"
datefield.code = @"date \@ " "\"yyyy年mm月dd日\" ";
// 应用之前获取的字符格式到日期字段
datefield.applycharacterformat(charaterformat);
// 设置日期字段的字体加粗
datefield.characterformat.bold = true;
// 在段落开始处插入日期字段,位置在找到的文本之前
paragraph.childobjects.insert(index, datefield);
// 创建字段结束标记
fieldmark fieldend = (fieldmark)document.createparagraphitem(paragraphitemtype.fieldmark);
fieldend.type = fieldmarktype.fieldend;
// 在段落中插入字段结束标记,紧随日期字段之后
paragraph.childobjects.insert(index 1, fieldend);
// 设置日期字段的结束标记
datefield.end = fieldend;
// 更新文档中的所有字段
document.isupdatefields = true;
// 将文档保存到新的文件
document.savetofile("在段落中插入日期域.docx", fileformat.docx);
// 释放文档对象所占用的资源
document.dispose();
}
}
}
c# 在 word 文档段落尾部添加日期域
为了在段落尾部高效地插入一个日期字段,spire.doc 库提供了一项便利的功能。具体而言,只需简单调用 paragraph.appendfield("date", fieldtype.fielddate) 这一方法。 以下是详细的步骤:
- 创建一个新的 document 对象。
- 使用 document.loadfromfile() 方法从文件系统中加载一个 word 文档。
- 通过 document.sections[0] 访问文档的第一个 section 对象。
- 从章节 section 的 body 属性中获取最后一个 paragraph 段落对象,这是为了在段落的末尾插入日期字段。
- 创建一个 characterformat 对象,用于存储和应用字符格式。
- 遍历段落的 childobjects 集合,查找其中的 textrange 对象,目的是为了获取段落中现有文本的字符格式。
- 当找到第一个 textrange 时,获取其 characterformat 属性,然后停止循环。这是因为我们只需获取段落中任一文本的格式,以便应用到即将创建的日期字段上。
- 使用 appendfield 方法向段落末尾添加一个日期字段,类型为 fieldtype.fielddate。
- 设置日期字段的代码,以显示日期格式为 "yyyy年mm月dd日"。
- 将上面获取的 characterformat 应用到刚创建的日期字段上,以保持文档格式的一致性。
- 设置日期字段的字体为加粗,以突出显示日期。
- 将 document.isupdatefields 属性设置为 true,确保在保存文档前更新所有字段的内容。
- 使用 document.savetofile() 方法将修改保存到文档。
- c#
using spire.doc;
using spire.doc.documents;
using spire.doc.fields;
using spire.doc.formatting;
namespace spiredocdemo
{
internal class program
{
static void main(string[] args)
{
// 创建一个新的文档对象
document document = new document();
// 从文件加载文档
document.loadfromfile("示例03.docx");
// 获取文档的第一个章节
section section = document.sections[0];
// 获取章节主体的最后一个段落
paragraph paragraph = (paragraph)section.body.lastparagraph;
// 创建一个字符格式对象
characterformat charaterformat = new characterformat(document);
for (int i = 0; i < paragraph.childobjects.count; i )
{
// 检查段落子对象是否为文本范围
if (paragraph.childobjects[i].documentobjecttype == documentobjecttype.textrange)
{
// 设置字符格式为当前文本范围的格式
charaterformat = ((textrange)paragraph.childobjects[i]).characterformat;
break;
}
}
// 创建一个日期字段
field datefield = paragraph.appendfield("date", fieldtype.fielddate);
// 设置字段代码,以显示日期格式为"yyyy年mm月dd日"
datefield.code = @"date \@ " "\"yyyy年mm月dd日\" ";
// 应用之前获取的字符格式到日期字段
datefield.applycharacterformat(charaterformat);
// 设置日期字段的字体加粗
datefield.characterformat.bold = true;
// 更新文档中的所有字段
document.isupdatefields = true;
// 将文档保存到新的文件
document.savetofile("在段落末尾插入日期域.docx", fileformat.docx);
// 释放文档对象所占用的资源
document.dispose();
}
}
}
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。