목차(목차) Word 문서의 문서에 포함된 내용에 대한 개요를 제공합니다. 또한 문서의 특정 섹션으로 이동할 수 있습니다. 이 기사에서는 C#을 사용하여 프로그래밍 방식으로 Word 문서의 목차를 사용하는 방법을 배웁니다. 특히 이 문서에서는 Word 문서에서 목차를 추가, 추출, 업데이트 또는 제거하는 방법을 다룹니다.
- Word 문서에서 TOC 작업을 위한 C# API
- Word 문서에 목차 추가
- Word 문서에서 목차 추출
- Word 문서에서 목차 업데이트
- Word 문서에서 목차 제거
- 무료 API 라이선스 받기
Word 문서에서 TOC 작업을 위한 C# API
Word 문서의 목차로 작업하기 위해 Aspose.Words for .NET을 사용합니다. 해당 API는 .NET 응용 프로그램 내에서 기본 및 고급 Word 자동화 기능을 수행하도록 설계되었습니다. 또한 Word 문서의 목차 조작에 대한 확실한 그립을 제공합니다. API를 다운로드하거나 NuGet을 사용하여 설치할 수 있습니다.
PM> Install-Package Aspose.Words
C#을 사용하여 Word 문서에 목차 추가
다음은 Aspose.Words for .NET을 사용하여 Word 문서에 목차를 추가하는 단계입니다.
- Document 클래스의 인스턴스를 생성합니다(기존 Word 문서를 로드하는 경우 생성자에 파일 경로 제공).
- DocumentBuilder 클래스의 인스턴스를 생성하고 앞서 생성한 Document 객체로 초기화합니다.
- DocumentBuilder.InsertTableOfContents("\\o \“1-3\” \\h \\z \\u") 메서드를 사용하여 목차를 삽입합니다.
- Document.UpdateFields() 메서드를 사용하여 필드를 업데이트합니다.
- Document.Save(String) 메서드를 사용하여 Word 문서를 저장합니다.
다음 코드 샘플은 C#에서 Word 문서에 목차를 추가하는 방법을 보여줍니다.
// 전체 예제 및 데이터 파일을 보려면 https://github.com/aspose-words/Aspose.Words-for-.NET으로 이동하십시오.
// 문서 디렉토리의 경로입니다.
string dataDir = RunExamples.GetDataDir_WorkingWithDocument();
// 문서를 초기화합니다.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// 문서의 시작 부분에 목차를 삽입합니다.
builder.InsertTableOfContents("\\o \"1-3\" \\h \\z \\u");
// 새로 삽입된 목차는 처음에는 비어 있습니다.
// 문서의 필드를 업데이트하여 채워야 합니다.
doc.UpdateFields();
dataDir = dataDir + "DocumentBuilderInsertTOC_out.doc";
doc.Save(dataDir);
C#을 사용하여 Word 문서에서 목차 추출
다음은 Word 문서의 목차에서 필드를 추출하는 단계입니다.
- Document 클래스를 사용하여 Word 문서를 로드합니다.
- Document.Range.Fields 컬렉션을 사용하여 문서의 각 Field를 반복합니다.
- Field.Type 속성을 사용하여 필드 유형이 하이퍼링크인지 확인합니다.
- 필드가 목차 섹션의 테이블 아래에 있는지 확인하십시오.
- 필드의 정보를 검색하고 인쇄하십시오.
다음 코드 샘플은 C#을 사용하여 Word 문서에서 목차를 추출하는 방법을 보여줍니다.
// 문서 디렉토리의 경로입니다.
string dataDir = RunExamples.GetDataDir_WorkingWithDocument();
string fileName = "TOC.doc";
Aspose.Words.Document doc = new Aspose.Words.Document(dataDir + fileName);
foreach (Field field in doc.Range.Fields)
{
if (field.Type.Equals(Aspose.Words.Fields.FieldType.FieldHyperlink))
{
FieldHyperlink hyperlink = (FieldHyperlink)field;
if (hyperlink.SubAddress != null && hyperlink.SubAddress.StartsWith("_Toc"))
{
Paragraph tocItem = (Paragraph)field.Start.GetAncestor(NodeType.Paragraph);
Console.WriteLine(tocItem.ToString(SaveFormat.Text).Trim());
Console.WriteLine("------------------");
if (tocItem != null)
{
Bookmark bm = doc.Range.Bookmarks[hyperlink.SubAddress];
// 이 TOC 항목이 가리키는 위치를 가져옵니다.
Paragraph pointer = (Paragraph)bm.BookmarkStart.GetAncestor(NodeType.Paragraph);
Console.WriteLine(pointer.ToString(SaveFormat.Text));
}
} // End If
}// End If
}// End Foreach
C#을 사용하여 Word 문서의 목차 업데이트
Word 문서에 내용을 추가할 때마다 목차를 업데이트해야 합니다. 프로그래밍 방식으로 수행하려면 문서를 저장하기 전에 Document.UpdateFields() 메서드를 호출하기만 하면 됩니다.
C#을 사용하여 Word 문서에서 목차 제거
.NET용 Aspose.Words를 사용하면 Word 문서에서 목차를 제거할 수도 있습니다. 다음은 이 작업을 수행하는 단계입니다.
- 먼저 Document 클래스를 사용하여 Word 문서를 로드합니다.
- 배열에서 각 목차의 FieldStart 노드를 가져와서 저장합니다.
- FieldEnd 유형의 노드(목차 끝)를 얻을 때까지 노드를 반복합니다.
- Node.Remove() 메서드를 사용하여 노드를 제거하고 업데이트된 문서를 저장합니다.
다음 코드 샘플은 C#의 Word 문서에서 목차를 제거하는 방법을 보여줍니다.
// 전체 예제 및 데이터 파일을 보려면 https://github.com/aspose-words/Aspose.Words-for-.NET으로 이동하십시오.
public static void Run()
{
// 문서 디렉토리의 경로입니다.
string dataDir = RunExamples.GetDataDir_WorkingWithStyles();
// 목차가 포함된 문서를 엽니다.
Document doc = new Document(dataDir + "Document.TableOfContents.doc");
// 문서에서 첫 번째 목차를 제거합니다.
RemoveTableOfContents(doc, 0);
dataDir = dataDir + "Document.TableOfContentsRemoveToc_out.doc";
// 출력을 저장합니다.
doc.Save(dataDir);
Console.WriteLine("\nSpecified TOC from a document removed successfully.\nFile saved at " + dataDir);
}
///<summary>
/// 문서에서 지정된 목차 필드를 제거합니다.
///</summary>
///<param name="doc"> 필드를 제거할 문서입니다.</param>
///<param name="index"> 제거할 TOC의 0부터 시작하는 인덱스입니다.</param>
public static void RemoveTableOfContents(Document doc, int index)
{
// 빠른 액세스를 위해 문서에 TOC 필드의 FieldStart 노드를 저장합니다.
ArrayList fieldStarts = new ArrayList();
// 지정된 TOC 내에서 찾은 노드를 저장하는 목록입니다. 그들은 제거됩니다
// 이 방법이 끝나면.
ArrayList nodeList = new ArrayList();
foreach (FieldStart start in doc.GetChildNodes(NodeType.FieldStart, true))
{
if (start.FieldType == FieldType.FieldTOC)
{
// FieldTOC 유형인 모든 FieldStart를 추가합니다.
fieldStarts.Add(start);
}
}
// 전달된 인덱스에 의해 지정된 TOC가 존재하는지 확인하십시오.
if (index > fieldStarts.Count - 1)
throw new ArgumentOutOfRangeException("TOC index is out of range");
bool isRemoving = true;
// 지정된 TOC의 FieldStart를 가져옵니다.
Node currentNode = (Node)fieldStarts[index];
while (isRemoving)
{
// 이러한 노드를 저장하고 나중에 한 번에 모두 삭제하는 것이 더 안전합니다.
nodeList.Add(currentNode);
currentNode = currentNode.NextPreOrder(doc);
// FieldTOC 유형의 FieldEnd 노드를 만나면 끝임을 알 수 있습니다.
// 현재 목차 및 우리는 여기에서 멈출 수 있습니다.
if (currentNode.NodeType == NodeType.FieldEnd)
{
FieldEnd fieldEnd = (FieldEnd)currentNode;
if (fieldEnd.FieldType == FieldType.FieldTOC)
isRemoving = false;
}
}
// 지정된 TOC에서 찾은 모든 노드를 제거합니다.
foreach (Node node in nodeList)
{
node.Remove();
}
}
무료 API 라이선스 받기
평가 제한 없이 API를 사용해보고 싶다면 임시 라이선스를 무료로 받으세요.
결론
이 문서에서는 C#을 사용하여 Word 문서에서 목차로 작업하는 방법을 배웠습니다. 단계별 가이드 및 코드 샘플은 Word 문서에서 목차를 추가, 업데이트, 추출 및 제거하는 방법을 보여줍니다. 문서를 사용하여 C# Word 자동화 API에 대해 자세히 알아볼 수 있습니다. 질문이나 우려 사항이 있는 경우 포럼을 통해 문의하십시오.