C# 给Word文档添加内容控件

- 日理万妓 2024-02-17 17:33 177阅读 0赞

在MSWord中,我们可以通过内容控件来向word文档中插入预先定义好的模块,指定模块的内容格式(如图片、日期、列表或格式化的文本等),从而创建一个结构化的word文档。下面就来看看如何使用C#给word文档添加组合框、文本、图片、日期选取器及下拉列表等内容控件(这里我借助了一个word组件Spire.Doc)。

添加组合框内容控件

组合框用于显示用户可以选择的项目列表。和下拉列表不同的是组合框允许用户编辑或添加项。

  1. //给段落添加一个内容控件并指定它的SDTtype为Combo Box
  2. StructureDocumentTagInline sd = new StructureDocumentTagInline(document);
  3. paragraph.ChildObjects.Add(sd);
  4. sd.SDTProperties.SDTType = SdtType.ComboBox;
  5. //创建一个Combo Box, 添加选项并把它赋值给内容控件
  6. SdtComboBox cb = new SdtComboBox();
  7. cb.ListItems.Add(new SdtListItem("Cat"));
  8. cb.ListItems.Add(new SdtListItem("Dog"));
  9. sd.SDTProperties.ControlProperties = cb;
  10. //设置显示文本
  11. TextRange rt = new TextRange(document);
  12. rt.Text = cb.ListItems[0].DisplayText;
  13. sd.SDTContent.ChildObjects.Add(rt);

Center

添加文本内容控件

纯文本控件包含文本,但不能包含其他项,例如表格、图片或其他内容控件。此外,纯文本控件中的所有文本都具有相同的格式。

添加文本内容控件的步骤和添加组合框内容控件类似,核心代码如下:

  1. paragraph = section.AddParagraph();
  2. sd = new StructureDocumentTagInline(document);
  3. paragraph.ChildObjects.Add(sd);
  4. sd.SDTProperties.SDTType = SdtType.Text;
  5. SdtText text = new SdtText(true);
  6. text.IsMultiline = true;
  7. sd.SDTProperties.ControlProperties = text;
  8. rt = new TextRange(document);
  9. rt.Text = "Text";
  10. sd.SDTContent.ChildObjects.Add(rt);

Center 1

添加图片内容控件

图片控件用于显示图像。我们可以在设计时或运行时指定图像,用户也可以单击此控件以选择要插入文档中的图像。

核心代码:

  1. paragraph = section.AddParagraph();
  2. sd = new StructureDocumentTagInline(document);
  3. paragraph.ChildObjects.Add(sd);
  4. sd.SDTProperties.SDTType = SdtType.Picture;
  5. DocPicture pic = new DocPicture(document){ Width = 10, Height = 10 };
  6. pic.LoadImage(Image.FromFile("C:\\Icon.jpg"));
  7. sd.SDTContent.ChildObjects.Add(pic);

Center 2

添加日期选取器内容控件

日期选取器提供用于选择日期的日历UI。最终用户单击控件中的下拉箭头时,就会显示日历。

核心代码:

  1. paragraph = section.AddParagraph();
  2. sd = new StructureDocumentTagInline(document);
  3. paragraph.ChildObjects.Add(sd);
  4. sd.SDTProperties.SDTType = SdtType.DatePicker;
  5. SdtDate date = new SdtDate();
  6. date.CalendarType = CalendarType.Default;
  7. date.DateFormat = "yyyy.MM.dd";
  8. date.FullDate = DateTime.Now;
  9. sd.SDTProperties.ControlProperties = date;
  10. rt = new TextRange(document);
  11. rt.Text = "1990.02.08";
  12. sd.SDTContent.ChildObjects.Add(rt);

Center 3

添加下拉列表内容控件

下拉列表显示了用户可以选择的项目列表。和组合框不同的是,下拉列表不允许用户添加或编辑项。

核心代码:

  1. paragraph = section.AddParagraph();
  2. sd = new StructureDocumentTagInline(document);
  3. paragraph.ChildObjects.Add(sd);
  4. sd.SDTProperties.SDTType = SdtType.DropDownList;
  5. SdtDropDownList sddl = new SdtDropDownList();
  6. sddl.ListItems.Add(newSdtListItem("Harry"));
  7. sddl.ListItems.Add(newSdtListItem("Jerry"));
  8. sd.SDTProperties.ControlProperties = sddl;
  9. rt = new TextRange(document);
  10. rt.Text = sddl.ListItems[0].DisplayText;
  11. sd.SDTContent.ChildObjects.Add(rt);

Center 4

全部代码:

  1. using System;
  2. using System.Drawing;
  3. using Spire.Doc;
  4. using Spire.Doc.Documents;
  5. using Spire.Doc.Fields;
  6. namespace Insert_content_control_in_word_document
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. //创建一个新的Word文档
  13. Document document = newDocument();
  14. Section section = document.AddSection();
  15. Paragraph paragraph = section.AddParagraph();
  16. //添加组合框内容控件
  17. StructureDocumentTagInline sd = new StructureDocumentTagInline(document);
  18. paragraph.ChildObjects.Add(sd);
  19. sd.SDTProperties.SDTType = SdtType.ComboBox;
  20. SdtComboBox cb = newSdtComboBox();
  21. cb.ListItems.Add(new SdtListItem("Cat"));
  22. cb.ListItems.Add(new SdtListItem("Dog"));
  23. sd.SDTProperties.ControlProperties = cb;
  24. TextRange rt = newTextRange(document);
  25. rt.Text = cb.ListItems[0].DisplayText;
  26. sd.SDTContent.ChildObjects.Add(rt);
  27. //添加文本内容控件
  28. paragraph = section.AddParagraph();
  29. sd= new StructureDocumentTagInline(document);
  30. paragraph.ChildObjects.Add(sd);
  31. sd.SDTProperties.SDTType = SdtType.Text;
  32. SdtText text = newSdtText(true);
  33. text.IsMultiline = true;
  34. sd.SDTProperties.ControlProperties = text;
  35. rt= new TextRange(document);
  36. rt.Text = "Text";
  37. sd.SDTContent.ChildObjects.Add(rt);
  38. //添加图片内容控件
  39. paragraph = section.AddParagraph();
  40. sd= new StructureDocumentTagInline(document);
  41. paragraph.ChildObjects.Add(sd);
  42. sd.SDTProperties.SDTType = SdtType.Picture;
  43. DocPicture pic = newDocPicture(document) { Width = 10, Height =10 };
  44. pic.LoadImage(Image.FromFile("C:\\Icon.jpg"));
  45. sd.SDTContent.ChildObjects.Add(pic);
  46. //添加日期选取器内容控件
  47. paragraph = section.AddParagraph();
  48. sd= new StructureDocumentTagInline(document);
  49. paragraph.ChildObjects.Add(sd);
  50. sd.SDTProperties.SDTType = SdtType.DatePicker;
  51. SdtDate date = newSdtDate();
  52. date.CalendarType = CalendarType.Default;
  53. date.DateFormat = "yyyy.MM.dd";
  54. date.FullDate = DateTime.Now;
  55. sd.SDTProperties.ControlProperties = date;
  56. rt= new TextRange(document);
  57. rt.Text = "1990.02.08";
  58. sd.SDTContent.ChildObjects.Add(rt);
  59. //添加下拉列表内容控件
  60. paragraph = section.AddParagraph();
  61. sd= new StructureDocumentTagInline(document);
  62. paragraph.ChildObjects.Add(sd);
  63. sd.SDTProperties.SDTType = SdtType.DropDownList;
  64. SdtDropDownList sddl = newSdtDropDownList();
  65. sddl.ListItems.Add(new SdtListItem("Harry"));
  66. sddl.ListItems.Add(new SdtListItem("Jerry"));
  67. sd.SDTProperties.ControlProperties = sddl;
  68. rt= new TextRange(document);
  69. rt.Text = sddl.ListItems[0].DisplayText;
  70. sd.SDTContent.ChildObjects.Add(rt);
  71. //保存并重启文件
  72. string resultfile = "sample.docx";
  73. document.SaveToFile(resultfile, FileFormat.Docx);
  74. System.Diagnostics.Process.Start(resultfile);
  75. }
  76. }
  77. }

发表评论

表情:
评论列表 (有 0 条评论,177人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C# Word文档添加内容

    在MSWord中,我们可以通过内容控件来向word文档中插入预先定义好的模块,指定模块的内容格式(如图片、日期、列表或格式化的文本等),从而创建一个结构化的word文档。下面就

    相关 C# Word 文档保护

    在微软Office Word中,我们可以设置Word权限,以保护文档。常规选项有:用密码进行加密和限制编辑。前者是指需要使用密码才能打开此文档,后者指控制其他人可以对此文档所做