フォームでは、テキスト、日付、画像、はい/いいえ形式の質問など、さまざまなタイプの情報のプレースホルダーを作成できます。これにより、読み手はどのような種類の情報を記載すればよいかがわかりやすくなり、また、すべての情報が同じように書式設定されるようにすることができます。Word ドキュメントで記入可能なフォームを作成するためには、以下のツールを使用する必要があります。
- コンテンツコントロール:フォームでユーザーが情報を入力する部分です。
- 表:表は、テキストやフォームフィールドを揃えるため、また、枠線とボックスを作成するためにフォームで使用します。
- 保護:ユーザーがフィールドに入力することはできますが、文書の残りの部分には変更を加えることができません。
Word ドキュメントのコンテンツ コントロールは、ユーザーが構造化されたドキュメントを作成できるようにするためのコンテンツのコンテナです。構造化されたドキュメントでは、ドキュメント内でコンテンツが表示される場所を制御します。Word 2013 では、基本的に10種類のコンテンツ コントロールが利用可能です。この記事では、Spire.Doc for .NET を使用して、以下の7つの一般的なコンテンツ コントロールで構成される Word ドキュメントに記入可能なフォームを作成する方法を説明します。
コンテンツ コントロール | 説明 |
テキスト | テキストフィールドはプレーンテキストに限定されるため、書式を含めることはできません。 |
リッチ テキスト | テキストフィールドで、フォーマットされたテキストや、テーブル、画像、その他のコンテンツコントロールなどのアイテムを含むことができます。 |
画像 | 1枚の画像を含むことができます。 |
ドロップダウン リスト | ドロップダウンリストは、ユーザーが選択できるように、あらかじめ定義されたアイテムのリストを表示します。 |
コンボ ボックス | コンボボックスは、ユーザーがリストの中からあらかじめ定義された値を選択したり、コントロールのテキストボックスに独自の値を入力したりすることができるものです。 |
チェック ボックス | チェックボックスは、ユーザーが「はい(チェック済み)」か「いいえ(チェックなし)」かの二者択一を行うことができるグラフィカルなウィジェットです。 |
日付選択 | ユーザーが日付を選択できるカレンダーコントロールが含まれる。 |
Spire.Doc for .NET をインストールします
まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.Doc
Word ドキュメントに記入可能なフォームを作成する
Spire.Doc for .NET が提供する StructureDocumentTagInline クラスは、段落内の インライン構造(DrawingML のオブジェクトやフィールドなど)に対する構造化ドキュメントタグを作成するために使用されます。このクラスの下にある SDTProperties プロパティと SDTContent プロパティは、現在の構造化ドキュメントタグのプロパティとコンテンツを指定するために使用します。以下は、Word ドキュメントにコンテンツコントロールを持つ記入可能なフォームを作成するための詳細な手順です。
- Document のオブジェクトを作成します。
- Document.AddSection() メソッドを使用してセクションを追加します。
- Section.AddTable() メソッドを使用して、表を追加します。
- TableCell.AddParagraph() メソッドを使用して、特定の表セルに段落を追加します。
- StructureDocumentTagInline のインスタンスを作成し、Paragraph.ChildObjects.Add() メソッドを使用して子オブジェクトとして段落に追加します。
- StructureDocumentTagInline オブジェクトの SDTProperties プロパティと SDTContent プロパティで、構造化ドキュメントタグのプロパティとコンテンツを指定します。構造化ドキュメントタグのタイプは、SDTProperties.SDTType プロパティで設定します。
- Document.Protect() メソッドを使用して、ユーザーがフォームフィールドの外のコンテンツを編集できないようにします。
- Document.SaveToFile() メソッドを使用して、ドキュメントを保存します。
- C#
- VB.NET
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System;
using System.Drawing;
namespace CreateFormInWord
{
class Program
{
static void Main(string[] args)
{
//Documentのオブジェクトを作成する
Document doc = new Document();
//セクションを追加する
Section section = doc.AddSection();
//表を追加する
Table table = section.AddTable(true);
table.ResetCells(7, 2);
//1列目のセルにテキストを追加する
Paragraph paragraph = table.Rows[0].Cells[0].AddParagraph();
paragraph.GetStyle().CharacterFormat.FontName = "BIZ UDGothic";
paragraph.AppendText("テキスト");
paragraph = table.Rows[1].Cells[0].AddParagraph();
paragraph.AppendText("リッチ テキスト");
paragraph = table.Rows[2].Cells[0].AddParagraph();
paragraph.AppendText("画像");
paragraph = table.Rows[3].Cells[0].AddParagraph();
paragraph.AppendText("ドロップダウン リスト");
paragraph = table.Rows[4].Cells[0].AddParagraph();
paragraph.AppendText("チェック ボックス");
paragraph = table.Rows[5].Cells[0].AddParagraph();
paragraph.AppendText("コンボ ボックス");
paragraph = table.Rows[6].Cells[0].AddParagraph();
paragraph.AppendText("日付選択");
//セル(0,1)にプレーンテキストコンテンツコントロールを追加する
paragraph = table.Rows[0].Cells[1].AddParagraph();
StructureDocumentTagInline sdt = new StructureDocumentTagInline(doc);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.Text;
sdt.SDTProperties.Alias = "テキスト";
sdt.SDTProperties.Tag = "テキスト";
sdt.SDTProperties.IsShowingPlaceHolder = true;
SdtText text = new SdtText(true);
text.IsMultiline = false;
sdt.SDTProperties.ControlProperties = text;
TextRange tr = new TextRange(doc);
tr.Text = "ここをクリックまたはタップしてテキストを入力してください。";
sdt.SDTContent.ChildObjects.Add(tr);
//セル(1,1)にリッチテキストコンテンツコントロールを追加する
paragraph = table.Rows[1].Cells[1].AddParagraph();
sdt = new StructureDocumentTagInline(doc);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.RichText;
sdt.SDTProperties.Alias = "リッチ テキスト";
sdt.SDTProperties.Tag = "リッチ テキスト";
sdt.SDTProperties.IsShowingPlaceHolder = true;
text = new SdtText(true);
text.IsMultiline = false;
sdt.SDTProperties.ControlProperties = text;
tr = new TextRange(doc);
tr.Text = "ここをクリックまたはタップしてテキストを入力してください。";
sdt.SDTContent.ChildObjects.Add(tr);
//セル(2,1)に画像コンテンツコントロールを追加する
paragraph = table.Rows[2].Cells[1].AddParagraph();
sdt = new StructureDocumentTagInline(doc);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.Picture;
sdt.SDTProperties.Alias = "画像";
sdt.SDTProperties.Tag = "画像";
SdtPicture sdtPicture = new SdtPicture();
sdt.SDTProperties.ControlProperties = sdtPicture;
DocPicture pic = new DocPicture(doc);
pic.LoadImage(Image.FromFile("C:\\Users\\Sirion\\Desktop\\画像を選択.png"));
sdt.SDTContent.ChildObjects.Add(pic);
//セル(3,1)にドロップダウンリストコンテンツコントロールを追加する
paragraph = table.Rows[3].Cells[1].AddParagraph();
sdt = new StructureDocumentTagInline(doc);
sdt.SDTProperties.SDTType = SdtType.DropDownList;
sdt.SDTProperties.Alias = "ドロップダウン リスト";
sdt.SDTProperties.Tag = "ドロップダウン リスト";
paragraph.ChildObjects.Add(sdt);
SdtDropDownList sddl = new SdtDropDownList();
sddl.ListItems.Add(new SdtListItem("アイテムを選択してください。", "1"));
sddl.ListItems.Add(new SdtListItem("アイテム 2", "2"));
sddl.ListItems.Add(new SdtListItem("アイテム 3", "3"));
sddl.ListItems.Add(new SdtListItem("アイテム 4", "4"));
sdt.SDTProperties.ControlProperties = sddl;
tr = new TextRange(doc);
tr.Text = sddl.ListItems[0].DisplayText;
sdt.SDTContent.ChildObjects.Add(tr);
//セル(4,1)にチェックボックスコンテンツコントロールを2つ追加する
paragraph = table.Rows[4].Cells[1].AddParagraph();
sdt = new StructureDocumentTagInline(doc);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.CheckBox;
SdtCheckBox scb = new SdtCheckBox();
sdt.SDTProperties.ControlProperties = scb;
tr = new TextRange(doc);
sdt.ChildObjects.Add(tr);
scb.Checked = false;
paragraph.AppendText(" オプション 1");
paragraph = table.Rows[4].Cells[1].AddParagraph();
sdt = new StructureDocumentTagInline(doc);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.CheckBox;
scb = new SdtCheckBox();
sdt.SDTProperties.ControlProperties = scb;
tr = new TextRange(doc);
sdt.ChildObjects.Add(tr);
scb.Checked = false;
paragraph.AppendText(" オプション 2");
//セル(5,1)にコンボボックスコンテンツコントロールを追加する
paragraph = table.Rows[5].Cells[1].AddParagraph();
sdt = new StructureDocumentTagInline(doc);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.ComboBox;
sdt.SDTProperties.Alias = "コンボ ボックス";
sdt.SDTProperties.Tag = "コンボ ボックス";
SdtComboBox cb = new SdtComboBox();
cb.ListItems.Add(new SdtListItem("アイテムを選択してください。"));
cb.ListItems.Add(new SdtListItem("アイテム 2"));
cb.ListItems.Add(new SdtListItem("アイテム 3"));
sdt.SDTProperties.ControlProperties = cb;
tr = new TextRange(doc);
tr.Text = cb.ListItems[0].DisplayText;
sdt.SDTContent.ChildObjects.Add(tr);
//セル(6,1)に日付選択コンテンツコントロールを追加する
paragraph = table.Rows[6].Cells[1].AddParagraph();
sdt = new StructureDocumentTagInline(doc);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.DatePicker;
sdt.SDTProperties.Alias = "日付選択";
sdt.SDTProperties.Tag = "日付選択";
SdtDate date = new SdtDate();
date.CalendarType = CalendarType.Default;
date.DateFormat = "yyyy.MM.dd";
date.FullDate = DateTime.Now;
sdt.SDTProperties.ControlProperties = date;
tr = new TextRange(doc);
tr.Text = "クリックまたはタップして日付を入力してください。";
sdt.SDTContent.ChildObjects.Add(tr);
//ユーザーがフォームフィールドを編集することのみを許可する
doc.Protect(ProtectionType.AllowOnlyFormFields, "permission-psd");
//ドキュメントを保存する
doc.SaveToFile("記入可能なフォーム.docx", FileFormat.Docx2013);
}
}
}
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System
Imports System.Drawing
Namespace CreateFormInWord
Class Program
Shared Sub Main(ByVal args() As String)
'Documentのオブジェクトを作成する
Dim doc As Document = New Document()
'セクションを追加する
Dim section As Section = doc.AddSection()
'表を追加する
Dim table As Table = section.AddTable(True)
table.ResetCells(7, 2)
'1列目のセルにテキストを追加する
Dim paragraph As Paragraph = table.Rows(0).Cells(0).AddParagraph()
paragraph.GetStyle().CharacterFormat.FontName = "BIZ UDGothic"
paragraph.AppendText("テキスト")
paragraph = table.Rows(1).Cells(0).AddParagraph()
paragraph.AppendText("リッチ テキスト")
paragraph = table.Rows(2).Cells(0).AddParagraph()
paragraph.AppendText("画像")
paragraph = table.Rows(3).Cells(0).AddParagraph()
paragraph.AppendText("ドロップダウン リスト")
paragraph = table.Rows(4).Cells(0).AddParagraph()
paragraph.AppendText("チェック ボックス")
paragraph = table.Rows(5).Cells(0).AddParagraph()
paragraph.AppendText("コンボ ボックス")
paragraph = table.Rows(6).Cells(0).AddParagraph()
paragraph.AppendText("日付選択")
'セル(0,1)にプレーンテキストコンテンツコントロールを追加する
paragraph = table.Rows(0).Cells(1).AddParagraph()
Dim sdt As StructureDocumentTagInline = New StructureDocumentTagInline(doc)
paragraph.ChildObjects.Add(sdt)
sdt.SDTProperties.SDTType = SdtType.Text
sdt.SDTProperties.Alias = "テキスト"
sdt.SDTProperties.Tag = "テキスト"
sdt.SDTProperties.IsShowingPlaceHolder = True
Dim text As SdtText = New SdtText(True)
text.IsMultiline = False
sdt.SDTProperties.ControlProperties = text
Dim tr As TextRange = New TextRange(doc)
tr.Text = "ここをクリックまたはタップしてテキストを入力してください。"
sdt.SDTContent.ChildObjects.Add(tr)
'セル(1,1)にリッチテキストコンテンツコントロールを追加する
paragraph = table.Rows(1).Cells(1).AddParagraph()
sdt = New StructureDocumentTagInline(doc)
paragraph.ChildObjects.Add(sdt)
sdt.SDTProperties.SDTType = SdtType.RichText
sdt.SDTProperties.Alias = "リッチ テキスト"
sdt.SDTProperties.Tag = "リッチ テキスト"
sdt.SDTProperties.IsShowingPlaceHolder = True
text = New SdtText(True)
text.IsMultiline = False
sdt.SDTProperties.ControlProperties = text
tr = New TextRange(doc)
tr.Text = "ここをクリックまたはタップしてテキストを入力してください。"
sdt.SDTContent.ChildObjects.Add(tr)
'セル(2,1)に画像コンテンツコントロールを追加する
paragraph = table.Rows(2).Cells(1).AddParagraph()
sdt = New StructureDocumentTagInline(doc)
paragraph.ChildObjects.Add(sdt)
sdt.SDTProperties.SDTType = SdtType.Picture
sdt.SDTProperties.Alias = "画像"
sdt.SDTProperties.Tag = "画像"
Dim sdtPicture As SdtPicture = New SdtPicture()
sdt.SDTProperties.ControlProperties = sdtPicture
Dim pic As DocPicture = New DocPicture(doc)
pic.LoadImage(Image.FromFile("C:\\Users\\Sirion\\Desktop\\画像を選択.png"))
sdt.SDTContent.ChildObjects.Add(pic)
'セル(3,1)にドロップダウンリストコンテンツコントロールを追加する
paragraph = table.Rows(3).Cells(1).AddParagraph()
sdt = New StructureDocumentTagInline(doc)
sdt.SDTProperties.SDTType = SdtType.DropDownList
sdt.SDTProperties.Alias = "ドロップダウン リスト"
sdt.SDTProperties.Tag = "ドロップダウン リスト"
paragraph.ChildObjects.Add(sdt)
Dim sddl As SdtDropDownList = New SdtDropDownList()
sddl.ListItems.Add(New SdtListItem("アイテムを選択してください。", "1"))
sddl.ListItems.Add(New SdtListItem("アイテム 2", "2"))
sddl.ListItems.Add(New SdtListItem("アイテム 3", "3"))
sddl.ListItems.Add(New SdtListItem("アイテム 4", "4"))
sdt.SDTProperties.ControlProperties = sddl
tr = New TextRange(doc)
tr.Text = sddl.ListItems(0).DisplayText
sdt.SDTContent.ChildObjects.Add(tr)
'セル(4,1)にチェックボックスコンテンツコントロールを2つ追加する
paragraph = table.Rows(4).Cells(1).AddParagraph()
sdt = New StructureDocumentTagInline(doc)
paragraph.ChildObjects.Add(sdt)
sdt.SDTProperties.SDTType = SdtType.CheckBox
Dim scb As SdtCheckBox = New SdtCheckBox()
sdt.SDTProperties.ControlProperties = scb
tr = New TextRange(doc)
sdt.ChildObjects.Add(tr)
scb.Checked = False
paragraph.AppendText(" オプション 1")
paragraph = table.Rows(4).Cells(1).AddParagraph()
sdt = New StructureDocumentTagInline(doc)
paragraph.ChildObjects.Add(sdt)
sdt.SDTProperties.SDTType = SdtType.CheckBox
scb = New SdtCheckBox()
sdt.SDTProperties.ControlProperties = scb
tr = New TextRange(doc)
sdt.ChildObjects.Add(tr)
scb.Checked = False
paragraph.AppendText(" オプション 2")
'セル(5,1)にコンボボックスコンテンツコントロールを追加する
paragraph = table.Rows(5).Cells(1).AddParagraph()
sdt = New StructureDocumentTagInline(doc)
paragraph.ChildObjects.Add(sdt)
sdt.SDTProperties.SDTType = SdtType.ComboBox
sdt.SDTProperties.Alias = "コンボ ボックス"
sdt.SDTProperties.Tag = "コンボ ボックス"
Dim cb As SdtComboBox = New SdtComboBox()
cb.ListItems.Add(New SdtListItem("アイテムを選択してください。"))
cb.ListItems.Add(New SdtListItem("アイテム 2"))
cb.ListItems.Add(New SdtListItem("アイテム 3"))
sdt.SDTProperties.ControlProperties = cb
tr = New TextRange(doc)
tr.Text = cb.ListItems(0).DisplayText
sdt.SDTContent.ChildObjects.Add(tr)
'セル(6,1)に日付選択コンテンツコントロールを追加する
paragraph = table.Rows(6).Cells(1).AddParagraph()
sdt = New StructureDocumentTagInline(doc)
paragraph.ChildObjects.Add(sdt)
sdt.SDTProperties.SDTType = SdtType.DatePicker
sdt.SDTProperties.Alias = "日付選択"
sdt.SDTProperties.Tag = "日付選択"
Dim date As SdtDate = New SdtDate()
Date.CalendarType = CalendarType.Default
Date.DateFormat = "yyyy.MM.dd"
Date.FullDate = DateTime.Now
sdt.SDTProperties.ControlProperties = Date
tr = New TextRange(doc)
tr.Text = "クリックまたはタップして日付を入力してください。"
sdt.SDTContent.ChildObjects.Add(tr)
'ユーザーがフォームフィールドを編集することのみを許可する
doc.Protect(ProtectionType.AllowOnlyFormFields, "permission-psd")
'ドキュメントを保存する
doc.SaveToFile("記入可能なフォーム.docx", FileFormat.Docx2013)
End Sub
End Class
End Namespace
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。