列出使用目标样式
内容
[
隐藏
]本教程将指导您完成使用 Aspose.Words for .NET 的列表使用目标样式功能的过程。此功能允许您在使用目标文档的列表样式的同时加入和附加 Word 文档。
先决条件
在开始之前,请确保您具备以下条件:
- Aspose.Words for .NET 已安装。您可以从 Aspose 网站下载它或通过 NuGet 安装它。
- Visual Studio 或任何其他 C# 开发环境。
第 1 步:初始化文档目录
首先,您需要设置文档目录的路径。修改值dataDir
变量到您的文档所在的路径。
string dataDir = "YOUR DOCUMENT DIRECTORY";
第 2 步:加载源文档和目标文档
接下来,您需要使用 Aspose.Words 加载源文档和目标文档Document
班级。更新文件名Document
根据您的文档名称构造函数。
Document srcDoc = new Document(dataDir + "Document source.docx");
Document dstDoc = new Document(dataDir + "Document destination with list.docx");
步骤 3:将源文档设置为在目标文档之后继续
为了确保源文档的内容在目标文档结束后继续,您需要设置SectionStart
源文档中第一部分的属性SectionStart.Continuous
.
srcDoc.FirstSection.PageSetup.SectionStart = SectionStart.Continuous;
第 4 步:处理列表格式
为了处理列表格式,您将遍历源文档中的每个段落并检查它是否是列表项。如果是,您将将该列表 ID 与目标文档中的现有列表进行比较。如果存在具有相同 ID 的列表,您将在源文档中创建该列表的副本,并更新段落的列表格式以使用复制的列表。
Dictionary<int, Aspose.Words.Lists.List> newLists = new Dictionary<int, Aspose.Words.Lists.List>();
foreach (Paragraph para in srcDoc.GetChildNodes(NodeType.Paragraph, true))
{
if (para.IsListItem)
{
int listId = para.ListFormat.List.ListId;
if (dstDoc.Lists.GetListByListId(listId) != null)
{
Aspose.Words.Lists.List currentList;
if (newLists.ContainsKey(listId))
{
currentList = newLists[listId];
}
else
{
currentList = srcDoc.Lists.AddCopy(para.ListFormat.List);
newLists.Add(listId, currentList);
}
para.ListFormat.List = currentList;
}
}
}
步骤 5:将源文档附加到目标文档
现在,您可以使用以下命令将源文档附加到目标文档AppendDocument
的方法Document
班级。这ImportFormatMode.UseDestinationStyles
参数确保在追加操作期间使用目标文档的列表样式。
dstDoc.AppendDocument(srcDoc, ImportFormatMode.UseDestinationStyles);
第 6 步:保存最终文档
最后,使用启用的“列表使用目标样式”功能保存合并的文档Save
的方法Document
班级。
dstDoc.Save(dataDir + "JoinAndAppendDocuments.ListUseDestinationStyles.docx");
使用 Aspose.Words for .NET 的列表使用目标样式的示例源代码
以下是 C# 中使用 Aspose.Words for .NET 的“列表使用目标样式”功能的完整源代码:
//文档目录的路径
string dataDir = "YOUR DOCUMENT DIRECTORY";
Document srcDoc = new Document(dataDir + "Document source.docx");
Document dstDoc = new Document(dataDir + "Document destination with list.docx");
//将源文档设置为在目标文档末尾后直接继续。
srcDoc.FirstSection.PageSetup.SectionStart = SectionStart.Continuous;
//跟踪创建的列表。
Dictionary<int, Aspose.Words.Lists.List> newLists = new Dictionary<int, Aspose.Words.Lists.List>();
foreach (Paragraph para in srcDoc.GetChildNodes(NodeType.Paragraph, true))
{
if (para.IsListItem)
{
int listId = para.ListFormat.List.ListId;
//检查目标文档是否已包含具有此 ID 的列表。如果确实如此,那么这可能
//使两个列表一起运行。相反,请在源文档中创建列表的副本。
if (dstDoc.Lists.GetListByListId(listId) != null)
{
Aspose.Words.Lists.List currentList;
//该 ID 已存在新复制的列表,检索存储的列表,
//并将其用于当前段落。
if (newLists.ContainsKey(listId))
{
currentList = newLists[listId];
}
else
{
//将此列表的副本添加到文档中并存储以供以后参考。
currentList = srcDoc.Lists.AddCopy(para.ListFormat.List);
newLists.Add(listId, currentList);
}
//将此段落的列表设置为复制的列表。
para.ListFormat.List = currentList;
}
}
}
//将源文档附加到目标文档的末尾。
dstDoc.AppendDocument(srcDoc, ImportFormatMode.UseDestinationStyles);
dstDoc.Save(dataDir + "JoinAndAppendDocuments.ListUseDestinationStyles.docx");
就是这样!您已使用 Aspose.Words for .NET 成功实现了“列表使用目标样式”功能。最终文档将包含与目标文档中的列表样式合并的内容。