DocumentBuilder

DocumentBuilder class

提供插入文本、图像和其他内容、指定字体、段落和节格式的方法。

public class DocumentBuilder

构造函数

姓名 描述
DocumentBuilder() 初始化这个类的一个新实例。
DocumentBuilder(Document) 初始化这个类的一个新实例。

特性

姓名 描述
Bold { get; set; } 如果字体格式为粗体则为真。
CellFormat { get; } 返回一个表示当前表格单元格格式属性的对象。
CurrentNode { get; } 获取当前在此 DocumentBuilder 中选择的节点。
CurrentParagraph { get; } 获取当前在此 DocumentBuilder 中选择的段落。
CurrentSection { get; } 获取当前在此 DocumentBuilder 中选择的部分。
CurrentStory { get; } 获取当前在此 DocumentBuilder 中选择的故事。
Document { get; set; } 获取或设置Document此对象附加到的对象。
Font { get; } 返回一个表示当前字体格式属性的对象。
IsAtEndOfParagraph { get; } 如果光标位于当前段落的末尾,则返回 true。
IsAtStartOfParagraph { get; } 如果光标位于当前段落的开头(光标之前没有文本),则返回 true。
Italic { get; set; } 如果字体格式为斜体则为真。
ListFormat { get; } 返回一个表示当前列表格式属性的对象。
PageSetup { get; } 返回一个表示当前页面设置和部分属性的对象。
ParagraphFormat { get; } 返回一个表示当前段落格式属性的对象。
RowFormat { get; } 返回一个表示当前表格行格式化属性的对象。
Underline { get; set; } 获取/设置当前字体的下划线类型。

方法

姓名 描述
DeleteRow(int, int) 从表中删除一行。
EndBookmark(string) 将文档中的当前位置标记为书签结束。
EndColumnBookmark(string) 将文档中的当前位置标记为列书签结束。该位置必须在表格单元格中。
EndEditableRange() 将文档中的当前位置标记为可编辑范围结束。
EndEditableRange(EditableRangeStart) 将文档中的当前位置标记为可编辑范围结束。
EndRow() 结束文档中的表格行。
EndTable() 结束文档中的一个表。
InsertBreak(BreakType) 将指定类型的中断插入到文档中。
InsertCell() 在文档中插入一个表格单元格。
InsertChart(ChartType, double, double) 在文档中插入一个图表对象并将其缩放到指定的大小。
InsertChart(ChartType, RelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType) 在文档中插入一个图表对象并将其缩放到指定的大小。
InsertCheckBox(string, bool, int) 在当前位置插入一个复选框表单域。
InsertCheckBox(string, bool, bool, int) 在当前位置插入一个复选框表单域。
InsertComboBox(string, string[], int) 在当前位置插入一个组合框表单域。
InsertDocument(Document, ImportFormatMode) 在光标位置插入一个文档。
InsertDocument(Document, ImportFormatMode, ImportFormatOptions) 在光标位置插入一个文档。
InsertField(string) 将 Word 字段插入文档并更新字段结果。
InsertField(FieldType, bool) 将 Word 字段插入到文档中,并可选择更新字段结果。
InsertField(string, string) 将 Word 字段插入文档而不更新字段结果。
InsertFootnote(FootnoteType, string) 在文档中插入脚注或尾注。
InsertFootnote(FootnoteType, string, string) 在文档中插入脚注或尾注。
InsertHorizontalRule() 在文档中插入水平线形状。
InsertHtml(string) 在文档中插入一个 HTML 字符串。
InsertHtml(string, bool) 在文档中插入一个 HTML 字符串。
InsertHtml(string, HtmlInsertOptions) 在文档中插入一个 HTML 字符串。允许指定其他选项。
InsertHyperlink(string, string, bool) 在文档中插入超链接。
InsertImage(byte[]) 将字节数组中的图像插入到文档中。图像以 100% 比例内嵌插入。
InsertImage(Image) 从 .NET 插入图像Image 对象放入文档中。图像以 100% 比例内嵌插入。
InsertImage(Stream) 将流中的图像插入到文档中。图像以 100% 比例内嵌插入。
InsertImage(string) 将文件或 URL 中的图像插入到文档中。图像以 100% 比例内嵌插入。
InsertImage(byte[], double, double) 将字节数组中的内联图像插入到文档中,并将其缩放到指定的大小。
InsertImage(Image, double, double) 从 .NET 插入内联图像Image 对象放入文档并将其缩放到指定的大小。
InsertImage(Stream, double, double) 将流中的内联图像插入到文档中并将其缩放到指定的大小。
InsertImage(string, double, double) 将文件或 URL 中的内嵌图像插入到文档中,并将其缩放到指定的大小。
InsertImage(byte[], RelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType) 在指定位置和大小插入字节数组中的图像。
InsertImage(Image, RelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType) 从 .NET 插入图像Image 指定位置和大小的对象。
InsertImage(Stream, RelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType) 在指定位置和大小插入流中的图像。
InsertImage(string, RelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType) 在指定位置和大小插入文件或 URL 中的图像。
InsertNode(Node) 在光标前的当前段落内插入一个文本级节点。
InsertOleObject(Stream, string, bool, Stream) 将嵌入的 OLE 对象从流中插入到文档中。
InsertOleObject(string, bool, bool, Stream) 将嵌入或链接的 OLE 对象从文件插入到文档中。使用文件扩展名检测 OLE 对象类型。
InsertOleObject(string, string, bool, bool, Stream) 将嵌入或链接的 OLE 对象从文件插入到文档中。使用给定的 progID 参数检测 OLE 对象类型。
InsertOleObjectAsIcon(Stream, string, string, string) 将嵌入的 OLE 对象作为图标从流中插入到文档中。 允许指定图标文件和标题。使用给定的 progID 参数检测 OLE 对象类型。
InsertOleObjectAsIcon(string, bool, string, string) 将嵌入或链接的 OLE 对象作为图标插入到文档中。 允许指定图标文件和标题。使用文件扩展名检测 OLE 对象类型。
InsertOleObjectAsIcon(string, string, bool, string, string) 将嵌入或链接的 OLE 对象作为图标插入到文档中。 允许指定图标文件和标题。使用给定的 progID 参数检测 OLE 对象类型。
InsertOnlineVideo(string, double, double) 将在线视频对象插入到文档中并缩放到指定大小。
InsertOnlineVideo(string, string, byte[], double, double) 将在线视频对象插入到文档中并缩放到指定大小。
InsertOnlineVideo(string, RelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType) 将在线视频对象插入到文档中并缩放到指定大小。
InsertOnlineVideo(string, string, byte[], RelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType) 将在线视频对象插入到文档中并缩放到指定大小。
InsertParagraph() 在文档中插入一个段落分隔符。
InsertShape(ShapeType, double, double) 插入具有指定类型和大小的内联形状。
InsertShape(ShapeType, RelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType) 插入具有指定位置、大小和文本环绕类型的自由浮动形状。
InsertSignatureLine(SignatureLineOptions) 在当前位置插入签名行。
InsertSignatureLine(SignatureLineOptions, RelativeHorizontalPosition, double, RelativeVerticalPosition, double, WrapType) 在指定位置插入签名行。
InsertStyleSeparator() 在文档中插入样式分隔符。
InsertTableOfContents(string) 在文档中插入一个 TOC(目录)字段。
InsertTextInput(string, TextFormFieldType, string, string, int) 在当前位置插入一个文本表单域。
MoveTo(Node) 将光标移动到内联节点或段落末尾。
MoveToBookmark(string) 将光标移动到书签。
MoveToBookmark(string, bool, bool) 将光标移动到更精确的书签。
MoveToCell(int, int, int, int) 将光标移动到当前节中的表格单元格。
MoveToDocumentEnd() 将光标移动到文档的末尾。
MoveToDocumentStart() 将光标移动到文档的开头。
MoveToField(Field, bool) 将光标移动到文档中的某个字段。
MoveToHeaderFooter(HeaderFooterType) 将光标移动到当前节的页眉或页脚的开头。
MoveToMergeField(string) 将光标移动到刚好超出指定合并字段的位置并删除合并字段。
MoveToMergeField(string, bool, bool) 将合并字段移动到指定的合并字段。
MoveToParagraph(int, int) 将光标移动到当前节中的段落。
MoveToSection(int) 将光标移动到指定部分的正文开头。
PopFont() 检索先前保存在堆栈中的字符格式。
PushFont() 将当前字符格式保存到堆栈中。
StartBookmark(string) 将文档中的当前位置标记为书签开始。
StartColumnBookmark(string) 将文档中的当前位置标记为列书签开始。该位置必须在表格单元格中。
StartEditableRange() 将文档中的当前位置标记为可编辑范围开始。
StartTable() 在文档中开始一个表。
Write(string) 在文档的当前插入位置插入一个字符串。
Writeln() 在文档中插入一个段落分隔符。
Writeln(string) 在文档中插入一个字符串和一个段落分隔符。

评论

文档生成器使构建过程 文档更容易. 文档是由节点树组成的复合对象,虽然可以将 content 节点直接插入树中,但需要对树结构有很好的理解。 文档生成器是复杂结构的“门面” 文档并允许 快速轻松地插入内容和格式。

创建一个 文档生成器并将其与Document.

文档生成器有一个内部光标,当您调用时,文本将被插入 Write,Writeln,InsertBreak 等方法。您可以浏览 文档生成器使用各种 MoveToXXX 方法将光标移动到文档中的不同 location 。

使用Font属性来指定将应用于 从文档中当前位置开始插入的所有文本的字符格式。

使用ParagraphFormat属性来指定 current 和将插入的所有段落的段落格式。

使用PageSetup属性来指定 current 部分和将插入的所有部分的页面和部分属性。

使用CellFormatRowFormat属性来为表格单元格和行指定 格式属性。用户InsertCellEndRow建表的方法。

注意 字体, 段落格式页面设置只要 导航到文档中的不同位置,属性就会更新,以反映新位置可用的格式属性。

例子

展示如何使用文档构建器来创建表格。

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// 启动表格,然后用两个单元格填充第一行。
builder.StartTable();
builder.InsertCell();
builder.Write("Row 1, Cell 1.");
builder.InsertCell();
builder.Write("Row 1, Cell 2.");

// 调用构建器的“EndRow”方法来开始一个新行。
builder.EndRow();
builder.InsertCell();
builder.Write("Row 2, Cell 1.");
builder.InsertCell();
builder.Write("Row 2, Cell 2.");
builder.EndTable();

doc.Save(ArtifactsDir + "DocumentBuilder.CreateTable.docx");

演示如何使用 DocumentBuilder 在文档中创建页眉和页脚。

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// 指定我们希望第一页、偶数页和奇数页使用不同的页眉和页脚。
builder.PageSetup.DifferentFirstPageHeaderFooter = true;
builder.PageSetup.OddAndEvenPagesHeaderFooter = true;

// 创建页眉,然后在文档中添加三页以显示每种页眉类型。
builder.MoveToHeaderFooter(HeaderFooterType.HeaderFirst);
builder.Write("Header for the first page");
builder.MoveToHeaderFooter(HeaderFooterType.HeaderEven);
builder.Write("Header for even pages");
builder.MoveToHeaderFooter(HeaderFooterType.HeaderPrimary);
builder.Write("Header for all other pages");

builder.MoveToSection(0);
builder.Writeln("Page1");
builder.InsertBreak(BreakType.PageBreak);
builder.Writeln("Page2");
builder.InsertBreak(BreakType.PageBreak);
builder.Writeln("Page3");

doc.Save(ArtifactsDir + "DocumentBuilder.HeadersAndFooters.docx");

演示如何构建具有自定义边框的表格。

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

builder.StartTable();

// 为文档构建器设置表格格式选项
// 将它们应用于我们添加的每一行和单元格。
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

builder.CellFormat.ClearFormatting();
builder.CellFormat.Width = 150;
builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
builder.CellFormat.Shading.BackgroundPatternColor = Color.GreenYellow;
builder.CellFormat.WrapText = false;
builder.CellFormat.FitText = true;

builder.RowFormat.ClearFormatting();
builder.RowFormat.HeightRule = HeightRule.Exactly;
builder.RowFormat.Height = 50;
builder.RowFormat.Borders.LineStyle = LineStyle.Engrave3D;
builder.RowFormat.Borders.Color = Color.Orange;

builder.InsertCell();
builder.Write("Row 1, Col 1");

builder.InsertCell();
builder.Write("Row 1, Col 2");
builder.EndRow();

// 更改格式会将其应用到当前单元格,
// 以及我们之后使用构建器创建的任何新单元格。
// 这不会影响我们之前添加的单元格。
builder.CellFormat.Shading.ClearFormatting();

builder.InsertCell();
builder.Write("Row 2, Col 1");

builder.InsertCell();
builder.Write("Row 2, Col 2");

builder.EndRow();

// 增加行高以适应垂直文本。
builder.InsertCell();
builder.RowFormat.Height = 150;
builder.CellFormat.Orientation = TextOrientation.Upward;
builder.Write("Row 3, Col 1");

builder.InsertCell();
builder.CellFormat.Orientation = TextOrientation.Downward;
builder.Write("Row 3, Col 2");

builder.EndRow();
builder.EndTable();

doc.Save(ArtifactsDir + "DocumentBuilder.InsertTable.docx");

也可以看看