에서 Word 문서의 디렉토리를 만들고 업데이트합니다.코어 [C#]
69873 단어 csharpwebdevproductivitydotnet
디렉터리는 제목을 위한 Word 문서 내용 목록이나 요강입니다.이것은 각 제목이 있는 페이지 번호를 표시하고 디렉터리의 각 항목을 문서의 해당 제목에 연결합니다.
개발자로서 디렉터리를 프로그래밍 방식으로 사용해야 할 수도 있습니다.이 블로그에서는 Syncfusion을 사용하여 C 언어에서 프로그래밍 방식으로 Word 문서의 디렉터리를 만들고, 편집하고, 업데이트하는 방법을 배울 것입니다.NET Core Word(DociO) 라이브러리입니다.
Syncfusion’s .NET Core Word (DocIO) Library 기능이 풍부하고 성능이 높습니다.NET 라이브러리에서 고급 Word 문서 처리 기능을 추가할 수 있습니다.NET 응용 프로그램.또한 Microsoft Office나 interop에 의존하지 않고 Word 문서를 프로그래밍, 읽기, 편집할 수 있습니다.
시작합시다!
제목 스타일이 있는 디렉토리 만들기 및 삽입
기본적으로 Microsoft Word는 문서 제목에 따라 최대 3단계(제목 1, 제목 2, 제목 3)의 디렉토리를 만듭니다.
마찬가지로 우리의 융합.NET Core Word(DociO) 라이브러리는 제목 스타일이 적용된 내용을 식별하여 디렉터리를 만들고 디렉터리 항목과 페이지 번호를 링크로 삽입합니다.
단락 스타일 적용에 대한 자세한 내용은 본 문서를 참조하십시오.Applying paragraph formatting.
WordDocument 클래스의 AppendTOC 방법을 사용하면 Word 문서의 내장 제목 스타일을 기반으로 프로그래밍 방식으로 디렉터리를 만들고 삽입할 수 있습니다.
다음 코드 예시에서는 Syncfusion Word 라이브러리를 사용하여 Word 문서에서 제목 레벨 1에서 3까지의 디렉터리를 만들고 삽입하는 방법을 보여 줍니다.
using Syncfusion.DocIO;
using Syncfusion.DocIO.DLS;
using Syncfusion.DocIORenderer;
using System.IO;
namespace Create_TOC
{
class Program
{
static void Main(string[] args)
{
using (WordDocument document = new WordDocument())
{
document.EnsureMinimal();
document.LastSection.PageSetup.Margins.All = 72;
WParagraph para = document.LastParagraph;
para.AppendText("Essential DocIO - Table of Contents");
para.ParagraphFormat.HorizontalAlignment = HorizontalAlignment.Center;
para.ApplyStyle(BuiltinStyle.Heading4);
para = document.LastSection.AddParagraph() as WParagraph;
para = document.LastSection.AddParagraph() as WParagraph;
//Insert TOC field in the Word document.
TableOfContent toc = para.AppendTOC(1, 3);
//Sets the heading levels 1 through 3 to include in the TOC.
toc.LowerHeadingLevel = 1;
toc.UpperHeadingLevel = 3;
//Adds content to the Word document with built-in heading styles.
WSection section = document.LastSection;
WParagraph newPara = section.AddParagraph() as WParagraph;
newPara.AppendBreak(BreakType.PageBreak);
AddHeading(section, BuiltinStyle.Heading1, "Document with built-in heading styles", "This is the built-in heading 1 style. This sample demonstrates the TOC insertion in a word document. Note that DocIO can insert TOC field in a word document. It can refresh or update TOC field by using UpdateTableOfContents method. MS Word refreshes the TOC field after insertion. Please update the field or press F9 key to refresh the TOC.");
AddHeading(section, BuiltinStyle.Heading2, "Section 1", "This is the built-in heading 2 style. A document can contain any number of sections. Sections are used to apply same formatting for a group of paragraphs. You can insert sections by inserting section breaks.");
AddHeading(section, BuiltinStyle.Heading3, "Paragraph 1", "This is the built-in heading 3 style. Each section contains any number of paragraphs. A paragraph is a set of statements that gives a meaning for the text.");
AddHeading(section, BuiltinStyle.Heading3, "Paragraph 2", "This is the built-in heading 3 style. This demonstrates the paragraphs at the same level and style as that of the previous one. A paragraph can have any number formatting. This can be attained by formatting each text range in the paragraph.");
//Adds a new section to the Word document.
section = document.AddSection() as WSection;
section.PageSetup.Margins.All = 72;
section.BreakCode = SectionBreakCode.NewPage;
AddHeading(section, BuiltinStyle.Heading2, "Section 2", "This is the built-in heading 2 style. A document can contain any number of sections. Sections are used to apply same formatting for a group of paragraphs. You can insert sections by inserting section breaks.");
AddHeading(section, BuiltinStyle.Heading3, "Paragraph 1", "This is the built-in heading 3 style. Each section contains any number of paragraphs. A paragraph is a set of statements that gives a meaning for the text.");
AddHeading(section, BuiltinStyle.Heading3, "Paragraph 2", "This is the built-in heading 3 style. This demonstrates the paragraphs at the same level and style as that of the previous one. A paragraph can have any number formatting. This can be attained by formatting each text range in the paragraph.");
//Updates the table of contents.
document.UpdateTableOfContents();
//Saves the file in the given path
Stream docStream = File.Create(Path.GetFullPath(@"../../../TOC-creation.docx"));
document.Save(docStream, FormatType.Docx);
docStream.Dispose();
}
}
private static void AddHeading(WSection section, BuiltinStyle builtinStyle, string headingText, string paragraghText)
{
WParagraph newPara = section.AddParagraph() as WParagraph;
WTextRange text = newPara.AppendText(headingText) as WTextRange;
newPara.ApplyStyle(builtinStyle);
newPara = section.AddParagraph() as WParagraph;
newPara.AppendText(paragraghText);
section.AddParagraph();
}
}
}
이 GitHub location 에서 전체 작업 예시를 다운로드할 수 있습니다.내장 제목 스타일을 사용하여 만든 디렉토리
컨텐트 변경 시 기존 디렉토리 업데이트
다음 변경 사항을 반영하여 Word 문서의 디렉토리를 재구성하거나 업데이트할 수 있습니다.
다음 코드 예시는 Syncfusion Word 라이브러리를 사용하여 Word 문서의 기존 디렉터리를 재구성하거나 업데이트하는 방법을 설명합니다.
using Syncfusion.DocIO;
using Syncfusion.DocIO.DLS;
using Syncfusion.DocIORenderer;
using System.IO;
namespace Update_TOC
{
class Program
{
static void Main(string[] args)
{
using (WordDocument document = new WordDocument())
{
//Opens the Word template document
Stream docStream = File.OpenRead(Path.GetFullPath(@"../../../TOC.docx"));
document.Open(docStream, FormatType.Docx);
docStream.Dispose();
//Modifies the heading text and inserts a page break
document.Replace("Section 1", "First section", true, true);
document.Replace("Paragraph 1", "First paragraph", true, true);
document.Replace("Paragraph 2", "Second paragraph", true, true);
document.Replace("Section 2", "Second section", true, true);
var selection = document.Find("heading 3 style", true, true);
var paragraph = selection.GetAsOneRange().OwnerParagraph.NextSibling as WParagraph;
paragraph.AppendBreak(BreakType.PageBreak);
//Updates the table of contents
document.UpdateTableOfContents();
//Saves the file in the given path
docStream = File.Create(Path.GetFullPath(@"../../../TOC-update.docx"));
document.Save(docStream, FormatType.Docx);
docStream.Dispose();
}
}
}
}
참고 디렉토리 업데이트 작업을 수행하려면 NuGet 패키지를 응용 프로그램에 포함해야 합니다.이 Syncfusion.DocIORenderer.Net.Core 에서 전체 작업 예시를 다운로드할 수 있습니다.
GitHub location Word 문서의 디렉토리 업데이트
기존 디렉토리 편집
이전 절에서, 우리는 제목 텍스트와 페이지 번호가 바뀔 때 디렉터리를 업데이트하는 것을 배웠다.이제 다음과 같은 편집 기능에 대해 살펴보겠습니다.
TableOfContent
다음 코드 예는 삽입 을 통해 페이지 번호를 숨기고 제목 수준의 수량을 변경하며 디렉터리에 일반 텍스트를 포함하는 방법을 보여 줍니다.
using Syncfusion.DocIO;
using Syncfusion.DocIO.DLS;
using Syncfusion.DocIORenderer;
using System.IO;
namespace Update_TOC
{
class Program
{
static void Main(string[] args)
{
using (WordDocument document = new WordDocument())
{
//Opens the Word template document
Stream docStream = File.OpenRead(Path.GetFullPath(@"../../../TOC.docx"));
document.Open(docStream, FormatType.Docx);
docStream.Dispose();
//Modifies the heading text and inserts a page break
document.Replace("Section 1", "First section", true, true);
document.Replace("Paragraph 1", "First paragraph", true, true);
document.Replace("Paragraph 2", "Second paragraph", true, true);
document.Replace("Section 2", "Second section", true, true);
var selection = document.Find("heading 3 style", true, true);
var paragraph = selection.GetAsOneRange().OwnerParagraph.NextSibling as WParagraph;
paragraph.AppendBreak(BreakType.PageBreak);
//Updates the table of contents
document.UpdateTableOfContents();
//Saves the file in the given path
docStream = File.Create(Path.GetFullPath(@"../../../TOC-update.docx"));
document.Save(docStream, FormatType.Docx);
docStream.Dispose();
}
}
}
}
TC field 디렉토리에서 페이지 번호 삭제사용자 정의 스타일이 있는 디렉토리 삽입하기
사용자 정의 스타일에 따라 디렉터리를 만들어야 할 수도 있습니다.이 작업을 수행할 수 있는 API는 다음과 같습니다.
UseHeadingStyles: 디렉터리에 내장된 제목 스타일을 포함하는 단락을 사용하거나 사용하지 않습니다.
SetTOCLevelStyle: 사용자 정의 스타일과 각각의 제목 레벨을 디렉토리에 포함하도록 설정합니다.
using Syncfusion.DocIO;
using Syncfusion.DocIO.DLS;
using Syncfusion.DocIORenderer;
using System.IO;
namespace TOC_for_custom_styles
{
class Program
{
static void Main(string[] args)
{
using (WordDocument document = new WordDocument())
{
document.EnsureMinimal();
document.LastSection.PageSetup.Margins.All = 72;
WParagraph para = document.LastParagraph;
para.AppendText("Essential DocIO - Table of Contents");
para.ParagraphFormat.HorizontalAlignment = HorizontalAlignment.Center;
para.ApplyStyle(BuiltinStyle.Heading4);
para = document.LastSection.AddParagraph() as WParagraph;
//Creates the new custom styles.
WParagraphStyle pStyle1 = (WParagraphStyle)document.AddParagraphStyle("MyStyle1");
pStyle1.CharacterFormat.FontSize = 18f;
WParagraphStyle pStyle2 = (WParagraphStyle)document.AddParagraphStyle("MyStyle2");
pStyle2.CharacterFormat.FontSize = 16f;
WParagraphStyle pStyle3 = (WParagraphStyle)document.AddParagraphStyle("MyStyle3");
pStyle3.CharacterFormat.FontSize = 14f;
para = document.LastSection.AddParagraph() as WParagraph;
//Insert TOC field in the Word document.
TableOfContent toc = para.AppendTOC(1, 3);
//Sets the Heading Styles to false to define custom levels for TOC.
toc.UseHeadingStyles = false;
//Sets the TOC level style based on which the TOC should be created.
toc.SetTOCLevelStyle(1, "MyStyle1");
toc.SetTOCLevelStyle(2, "MyStyle2");
toc.SetTOCLevelStyle(3, "MyStyle3");
//Adds content to the Word document with custom styles.
WSection section = document.LastSection;
WParagraph newPara = section.AddParagraph() as WParagraph;
newPara.AppendBreak(BreakType.PageBreak);
AddHeading(section, "MyStyle1", "Document with custom styles", "This is the 1st custom style. This sample demonstrates the TOC insertion in a Word document. Note that DocIO can insert TOC fields in a Word document. It can refresh or update the TOC field by using the UpdateTableOfContents method. MS Word refreshes the TOC field after insertion. Please update the field or press F9 to refresh the TOC.");
AddHeading(section, "MyStyle2", "Section 1", "This is the 2nd custom style. A document can contain any number of sections. Sections are used to apply the same formatting to a group of paragraphs. You can insert sections by inserting section breaks.");
AddHeading(section, "MyStyle3", "Paragraph 1", "This is the 3rd custom style. Each section contains any number of paragraphs. A paragraph is a set of statements that gives meaning to the text.");
AddHeading(section, "MyStyle3", "Paragraph 2", "This is the 3rd custom style. This demonstrates the paragraphs at the same level and with the same style as the previous one. A paragraph can have any kind of formatting. This can be attained by formatting each text range in the paragraph.");
AddHeading(section, "Normal", "Paragraph with normal", "This is the paragraph with the Normal style. This demonstrates the paragraph with outline level 4 and the Normal style. This can be attained by formatting the outline level of the paragraph.");
//Adds a new section to the Word document.
section = document.AddSection() as WSection;
section.PageSetup.Margins.All = 72;
section.BreakCode = SectionBreakCode.NewPage;
AddHeading(section, "MyStyle2", "Section 2", "This is the 2nd custom style. A document can contain any number of sections. Sections are used to apply the same formatting to a group of paragraphs. You can insert sections by inserting section breaks.");
AddHeading(section, "MyStyle3", "Paragraph 1", "This is the 3rd custom style. Each section contains any number of paragraphs. A paragraph is a set of statements that gives meaning to the text.");
AddHeading(section, "MyStyle3", "Paragraph 2", "This is the 3rd custom style. This demonstrates the paragraphs at the same level and with the same style as the previous one. A paragraph can have any kind of formatting. This can be attained by formatting each text range in the paragraph.");
//Updates the table of contents.
document.UpdateTableOfContents();
//Saves the file in the given path
Stream docStream = File.Create(Path.GetFullPath(@"../../../TOC-custom-style.docx"));
document.Save(docStream, FormatType.Docx);
docStream.Dispose();
}
}
private static void AddHeading(WSection section, string styleName, string headingText, string paragraghText)
{
WParagraph newPara = section.AddParagraph() as WParagraph;
WTextRange text = newPara.AppendText(headingText) as WTextRange;
newPara.ApplyStyle(styleName);
newPara = section.AddParagraph() as WParagraph;
newPara.AppendText(paragraghText);
section.AddParagraph();
}
}
}
이
에서 전체 작업 예시를 다운로드할 수 있습니다.GitHub location 사용자 정의 스타일로 만든 디렉토리
디렉터리 항목 형식 사용자 정의
이 절에서 디렉터리 항목의 외관을 사용자 정의하는 방법을 알 수 있습니다.다음 TOC 제목 스타일이 예제에 적용됩니다.
using Syncfusion.DocIO;
using Syncfusion.DocIO.DLS;
using Syncfusion.DocIORenderer;
using System.IO;
namespace customize_toc_entries_style
{
class Program
{
static void Main(string[] args)
{
using (WordDocument document = new WordDocument())
{
document.EnsureMinimal();
document.LastSection.PageSetup.Margins.All = 72;
WParagraph para = document.LastParagraph;
para.AppendText("Essential DocIO - Table of Contents");
para.ParagraphFormat.HorizontalAlignment = HorizontalAlignment.Center;
para.ApplyStyle(BuiltinStyle.Heading4);
para = document.LastSection.AddParagraph() as WParagraph;
para = document.LastSection.AddParagraph() as WParagraph;
//Insert TOC field in the Word document.
TableOfContent toc = para.AppendTOC(1, 3);
//Sets the heading levels 1 through 3 to include in the TOC.
toc.LowerHeadingLevel = 1;
toc.UpperHeadingLevel = 3;
//Adds content to the Word document with built-in heading styles.
WSection section = document.LastSection;
WParagraph newPara = section.AddParagraph() as WParagraph;
newPara.AppendBreak(BreakType.PageBreak);
AddHeading(section, BuiltinStyle.Heading1, "Document with built-in heading styles", "This is the built-in heading 1 style. This sample demonstrates TOC insertion in a Word document. Note that DocIO can insert TOC fields in a Word document. It can refresh or update TOC fields with the UpdateTableOfContents method. MS Word refreshes the TOC field after insertion. Please update the field or press F9 to refresh the TOC.");
AddHeading(section, BuiltinStyle.Heading2, "Section 1", "This is the built-in heading 2 style. A document can contain any number of sections. Sections are used to apply the same formatting to a group of paragraphs. You can insert sections by inserting section breaks.");
AddHeading(section, BuiltinStyle.Heading3, "Paragraph 1", "This is the built-in heading 3 style. Each section contains any number of paragraphs. A paragraph is a set of statements that gives meaning to the text.");
AddHeading(section, BuiltinStyle.Heading3, "Paragraph 2", "This is the built-in heading 3 style. This demonstrates paragraphs at the same level and with the same style as that of the previous one. A paragraph can have any formatting. This can be attained by formatting each text range in the paragraph.");
//Adds a new section to the Word document.
section = document.AddSection() as WSection;
section.PageSetup.Margins.All = 72;
section.BreakCode = SectionBreakCode.NewPage;
AddHeading(section, BuiltinStyle.Heading2, "Section 2", "This is the built-in heading 2 style. A document can contain any number of sections. Sections are used to apply the same formatting to a group of paragraphs. You can insert sections by inserting section breaks.");
AddHeading(section, BuiltinStyle.Heading3, "Paragraph 1", "This is the built-in heading 3 style. Each section contains any number of paragraphs. A paragraph is a set of statements that gives meaning to the text.");
AddHeading(section, BuiltinStyle.Heading3, "Paragraph 2", "This is the built-in heading 3 style. This demonstrates paragraphs at the same level and with the same style as that of the previous one. A paragraph can have any formatting. This can be attained by formatting each text range in the paragraph.");
//Access the TOC 1 style and update its formatting.
IWParagraphStyle toc1style = document.AddParagraphStyle("TOC 1");
toc1style.CharacterFormat.FontName = "Calibri";
toc1style.CharacterFormat.FontSize = 14;
toc1style.CharacterFormat.Bold = true;
toc1style.CharacterFormat.Italic = true;
toc1style.ParagraphFormat.AfterSpacing = 8;
//Access the TOC 2 style and update its formatting.
IWParagraphStyle toc2style = document.AddParagraphStyle("TOC 2");
toc2style.CharacterFormat.FontName = "Calibri";
toc2style.CharacterFormat.FontSize = 12;
toc2style.ParagraphFormat.AfterSpacing = 5;
toc2style.CharacterFormat.Bold = true;
toc2style.ParagraphFormat.LeftIndent = 11;
//Access the TOC 3 style and update its formatting.
IWParagraphStyle toc3style = document.AddParagraphStyle("TOC 3"); ;
toc3style.CharacterFormat.FontName = "Calibri";
toc3style.CharacterFormat.FontSize = 12;
toc3style.ParagraphFormat.AfterSpacing = 3;
toc3style.CharacterFormat.Italic = true;
toc3style.ParagraphFormat.LeftIndent = 22;
//Updates the table of contents.
document.UpdateTableOfContents();
//Saves the file in the given path
Stream docStream = File.Create(Path.GetFullPath(@"../../../TOC-entry-style.docx"));
document.Save(docStream, FormatType.Docx);
docStream.Dispose();
}
}
private static void AddHeading(WSection section, BuiltinStyle builtinStyle, string headingText, string paragraghText)
{
WParagraph newPara = section.AddParagraph() as WParagraph;
WTextRange text = newPara.AppendText(headingText) as WTextRange;
newPara.ApplyStyle(builtinStyle);
newPara = section.AddParagraph() as WParagraph;
newPara.AppendText(paragraghText);
section.AddParagraph();
}
}
}
이
에서 전체 작업 예시를 다운로드할 수 있습니다.GitHub location 사용자 정의 형식의 디렉터리 항목
디렉터리 삭제
다음 코드 세그먼트를 사용하여 Word 문서에서 기존 디렉터리를 삭제할 수도 있습니다.
다음 코드 세그먼트는 TOC 필드의 시작과 끝 위치를 식별한 다음 TOC 주위에 책갈피를 동적으로 삽입하고 책갈피에 포함된 모든 내용을 삭제합니다.모든helper 방법을 포함하는 전체 코드를 얻으려면 본문 의 예시를 참조하십시오.
using (WordDocument document = new WordDocument())
{
//Opens the Word template document.
Stream docStream = File.OpenRead(Path.GetFullPath(@"../../../TOC.docx"));
document.Open(docStream, FormatType.Docx);
docStream.Dispose();
//Removes the TOC field.
TableOfContent toc = document.Sections[0].Body.Paragraphs[2].Items[0] as TableOfContent;
RemoveTableOfContents(toc);
//Saves the file in the given path
docStream = File.Create(Path.GetFullPath(@"../../../Sample.docx"));
document.Save(docStream, FormatType.Docx);
docStream.Dispose();
}
GitHub 위치 총결산
시간을 내서 이 블로그를 읽어 주셔서 감사합니다.Word 문서에서 디렉터리를 만들고, 편집하고, 업데이트하는 방법을 알려드릴 수 있기를 바랍니다.이 기능은 특정 제목을 쉽게 탐색하고 모든 내용을 읽을 필요 없이 지루한 문서의 구조를 이해하는 데 도움을 줍니다.
시간을 들여 자세히 읽으십시오 . 거기서 다른 옵션과 기능, 그리고 첨부된 코드 예시를 발견할 수 있습니다.Word 라이브러리를 사용하면 Word 문서를 작성, 편집 및 통합하고 Syncfusion Word Library, documentation, PDF, image 및 기타 형식으로 변환할 수 있습니다.
텍스트 라이브러리 (기본 문서) 에 익숙하지 않으면, 저희의 HTML 를 따르는 것을 강력히 권장합니다.
당신은 이미 Syncfusion 사용자입니까?제품 설정RTF을 다운로드할 수 있습니다.만약 당신이 아직 Syncfusion 사용자가 아니라면, 당신은 무료 30일 평가판 Getting Started guide 을 다운로드할 수 있습니다.
이 기능에 대해 궁금한 점이 있으면 아래 설명 부분에서 알려주십시오.당신도 우리의 heres, here 또는 support forum를 통해 우리에게 연락할 수 있습니다.우리는 항상 기꺼이 너를 돕는다!
Reference
이 문제에 관하여(에서 Word 문서의 디렉토리를 만들고 업데이트합니다.코어 [C#]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/syncfusion/create-and-update-table-of-contents-in-word-documents-in-net-core-c-4o0j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)