チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

Koohji

Koohji

フォームでは、テキスト、日付、画像、はい/いいえ形式の質問など、さまざまなタイプの情報のプレースホルダーを作成できます。これにより、読み手はどのような種類の情報を記載すればよいかがわかりやすくなり、また、すべての情報が同じように書式設定されるようにすることができます。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

C#/VB.NET:Word ドキュメントに記入可能なフォームを作成する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Word ドキュメントでは、他の人が情報を入力するために使用できるフォームを作成することができます。記入可能なフォームは、さまざまな用途で使用されます。人事部では、従業員やコンサルタントの情報を収集するためにフォームを使用します。営業部門は、製品やサービスに対する顧客の満足度を調査するためにフォームを使用します。組織は、会員、学生、顧客を登録するためにフォームを使用します。フォームを作成する際に使用するツールには、以下のようなものがあります:

  • コンテンツコントロール:フォームでユーザーが情報を入力する部分です。
  • :表は、テキストフィールドとフォームフィールドを揃えたり、枠線とボックスを作成したりするために使用されます。
  • 保護:ユーザーがフィールドに入力することはできますが、ドキュメントの残りの部分には変更を加えることができません。

Word ドキュメントのコンテンツコントロールは、ユーザーが構造化されたドキュメントを構築できるようにするためのコンテンツのコンテナです。構造化されたドキュメントでは、ドキュメント内でコンテンツが表示される場所を制御します。Word 2013 では、基本的に10種類のコンテンツコントロールが利用可能です。この記事では、Spire.Doc for Java を使用して、以下の7つの一般的なコンテンツコントロールで構成される Word ドキュメントに記入可能なフォームを作成する方法を中心に説明します。

コンテンツ コントロール 説明
テキスト テキストフィールドはプレーンテキストに限定されるため、書式を含めることはできません。
リッチ テキスト テキストフィールドで、フォーマットされたテキストや、テーブル、画像、その他のコンテンツコントロールなどのアイテムを含むことができます。
画像 1枚の画像を含むことができます。
ドロップダウン リスト ドロップダウンリストは、ユーザーが選択できるように、あらかじめ定義されたアイテムのリストを表示します。
コンボ ボックス コンボボックスは、ユーザーがリストの中からあらかじめ定義された値を選択したり、コントロールのテキストボックスに独自の値を入力したりすることができるものです。
チェック ボックス チェックボックスは、ユーザーが「はい(チェック済み)」か「いいえ(チェックなし)」かの二者択一を行うことができるグラフィカルなウィジェットです。
日付選択 ユーザーが日付を選択できるカレンダーコントロールが含まれる。

Spire.Doc for Java をインストールします

まず、Spire. Doc for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>11.4.2</version>
    </dependency>
</dependencies>

Word ドキュメントに記入可能なフォームを作成する

Spire.Doc for Java が提供する StructureDocumentTagInline クラスは、段落内のインラインレベルの構造(DrawingML オブジェクト、フィールドなど)に対する構造化文書タグを作成するために使用する。このクラスの下にある SDTProperties プロパティと SDTContent プロパティは、現在の構造化文書タグのプロパティとコンテンツを指定するために使用されるものとする。以下は、Word ドキュメントにコンテンツコントロールを備えた記入可能なフォームを作成するための詳細な手順です。

  • Document のオブジェクトを作成します。
  • Document.addSection() メソッドを使用してセクションを追加します。
  • Section.addTable() メソッドを使用して、表を追加します。
  • TableCell.addParagraph() メソッドを使用して、特定の表セルに段落を追加します。
  • StructureDocumentTagInline のインスタンスを作成し、Paragraph.getChildObjects().add() メソッドを使用して、子オブジェクトとして段落に追加します。
  • StructureDocumentTagInline オブジェクトの SDTProperties プロパティと SDTContent プロパティの下にあるメソッドを使用して、構造化文書タグのプロパティとコンテンツを指定します。構造化文書タグの種類は、SDTProperties.setSDTType() メソッドで設定します。
  • Document.protect() メソッドを使用して、ユーザーがフォームフィールドの外のコンテンツを編集できないようにします。
  • Document.saveToFile() メソッドを使用して、ドキュメントを保存します。
  • Java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.fields.TextRange;
import com.spire.pdf.graphics.PdfTrueTypeFont;

import java.util.Date;

public class CreateFillableForm {

    public 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.getRows().get(0).getCells().get(0).addParagraph();
        paragraph.getStyle().getCharacterFormat().setFontName("Yu Gothic UI");
        paragraph.getStyle().getCharacterFormat().setFontSize(12);
        paragraph.appendText("テキスト コンテンツ コントロール");
        paragraph = table.getRows().get(1).getCells().get(0).addParagraph();
        paragraph.appendText("リッチ テキスト コンテンツ コントロール");
        paragraph = table.getRows().get(2).getCells().get(0).addParagraph();
        paragraph.appendText("画像コンテンツ コントロール");
        paragraph = table.getRows().get(3).getCells().get(0).addParagraph();
        paragraph.appendText("ドロップダウン リスト コンテンツ コントロール");
        paragraph = table.getRows().get(4).getCells().get(0).addParagraph();
        paragraph.appendText("チェック ボックス コンテンツ コントロール");
        paragraph = table.getRows().get(5).getCells().get(0).addParagraph();
        paragraph.appendText("コンボ ボックス コンテンツ コントロール");
        paragraph = table.getRows().get(6).getCells().get(0).addParagraph();
        paragraph.appendText("日付選択コンテンツ コントロール");

        //セル(0,1)にテキストコンテンツコントロールを追加する
        paragraph = table.getRows().get(0).getCells().get(1).addParagraph();
        StructureDocumentTagInline sdt = new StructureDocumentTagInline(doc);
        paragraph.getChildObjects().add(sdt);
        sdt.getSDTProperties().setSDTType(SdtType.Text);
        sdt.getSDTProperties().setAlias("テキスト");
        sdt.getSDTProperties().setTag("テキスト");
        sdt.getSDTProperties().isShowingPlaceHolder(true);
        SdtText text = new SdtText(true);
        text.isMultiline(false);
        sdt.getSDTProperties().setControlProperties(text);
        TextRange tr = new TextRange(doc);
        tr.setText("ここをクリックまたはタップしてテキストを入力してください。");
        sdt.getSDTContent().getChildObjects().add(tr);

        //セル(1,1)にリッチテキストコンテンツコントロールを追加する
        paragraph = table.getRows().get(1).getCells().get(1).addParagraph();
        sdt = new StructureDocumentTagInline(doc);
        paragraph.getChildObjects().add(sdt);
        sdt.getSDTProperties().setSDTType(SdtType.Rich_Text);
        sdt.getSDTProperties().setAlias("リッチ テキスト");
        sdt.getSDTProperties().setTag("リッチ テキスト");
        sdt.getSDTProperties().isShowingPlaceHolder(true);
        text = new SdtText(true);
        text.isMultiline(false);
        sdt.getSDTProperties().setControlProperties(text);
        tr = new TextRange(doc);
        tr.setText("ここをクリックまたはタップしてテキストを入力してください。");
        sdt.getSDTContent().getChildObjects().add(tr);

        //セル(2,1)に画像コンテンツコントロールを追加する
        paragraph = table.getRows().get(2).getCells().get(1).addParagraph();
        sdt = new StructureDocumentTagInline(doc);
        paragraph.getChildObjects().add(sdt);
        sdt.getSDTProperties().setSDTType(SdtType.Picture);
        sdt.getSDTProperties().setAlias("画像");
        sdt.getSDTProperties().setTag("画像");
        SdtPicture sdtPicture = new SdtPicture();
        sdt.getSDTProperties().setControlProperties(sdtPicture);
        DocPicture pic = new DocPicture(doc);
        pic.loadImage("C:/画像を選択.png");
        sdt.getSDTContent().getChildObjects().add(pic);

        //セル(3,1)にドロップダウンリストコンテンツコントロールを追加する
        paragraph = table.getRows().get(3).getCells().get(1).addParagraph();
        sdt = new StructureDocumentTagInline(doc);
        sdt.getSDTProperties().setSDTType(SdtType.Drop_Down_List);
        sdt.getSDTProperties().setAlias("ドロップダウン リスト");
        sdt.getSDTProperties().setTag("ドロップダウン リスト");
        paragraph.getChildObjects().add(sdt);
        SdtDropDownList sddl = new SdtDropDownList();
        sddl.getListItems().add(new SdtListItem("アイテムを選択してください。", "1"));
        sddl.getListItems().add(new SdtListItem("アイテム2", "2"));
        sddl.getListItems().add(new SdtListItem("アイテム3", "3"));
        sddl.getListItems().add(new SdtListItem("アイテム4", "4"));
        sdt.getSDTProperties().setControlProperties(sddl);
        tr = new TextRange(doc);
        tr.setText(sddl.getListItems().get(0).getDisplayText());
        sdt.getSDTContent().getChildObjects().add(tr);

        //セル(4,1)にチェックボックスのコンテンツコントロールを2つ追加する
        paragraph = table.getRows().get(4).getCells().get(1).addParagraph();
        sdt = new StructureDocumentTagInline(doc);
        paragraph.getChildObjects().add(sdt);
        sdt.getSDTProperties().setSDTType(SdtType.Check_Box);
        SdtCheckBox scb = new SdtCheckBox();
        sdt.getSDTProperties().setControlProperties(scb);
        tr = new TextRange(doc);
        sdt.getChildObjects().add(tr);
        scb.setChecked(false);
        paragraph.appendText("オプション1");

        paragraph = table.getRows().get(4).getCells().get(1).addParagraph();
        sdt = new StructureDocumentTagInline(doc);
        paragraph.getChildObjects().add(sdt);
        sdt.getSDTProperties().setSDTType(SdtType.Check_Box);
        scb = new SdtCheckBox();
        sdt.getSDTProperties().setControlProperties(scb);
        tr = new TextRange(doc);
        sdt.getChildObjects().add(tr);
        scb.setChecked(false);
        paragraph.appendText("オプション2");

        //セル(5,1)にコンボボックスのコンテンツコントロールを追加する
        paragraph = table.getRows().get(5).getCells().get(1).addParagraph();
        sdt = new StructureDocumentTagInline(doc);
        paragraph.getChildObjects().add(sdt);
        sdt.getSDTProperties().setSDTType(SdtType.Combo_Box);
        sdt.getSDTProperties().setAlias("コンボ ボックス");
        sdt.getSDTProperties().setTag("コンボ ボックス");
        SdtComboBox cb = new SdtComboBox();
        cb.getListItems().add(new SdtListItem("アイテムを選択してください。"));
        cb.getListItems().add(new SdtListItem("アイテム2"));
        cb.getListItems().add(new SdtListItem("アイテム3"));
        sdt.getSDTProperties().setControlProperties(cb);
        tr = new TextRange(doc);
        tr.setText(cb.getListItems().get(0).getDisplayText());
        sdt.getSDTContent().getChildObjects().add(tr);

        //セル(6,1)に日付ピッカーコンテンツコントロールを追加する
        paragraph = table.getRows().get(6).getCells().get(1).addParagraph();
        sdt = new StructureDocumentTagInline(doc);
        paragraph.getChildObjects().add(sdt);
        sdt.getSDTProperties().setSDTType(SdtType.Date_Picker);
        sdt.getSDTProperties().setAlias("日付選択");
        sdt.getSDTProperties().setTag("日付選択");
        SdtDate date = new SdtDate();
        date.setCalendarType(CalendarType.Default);
        date.setDateFormat("yyyy.MM.dd");
        date.setFullDate(new Date());
        sdt.getSDTProperties().setControlProperties(date);
        tr = new TextRange(doc);
        tr.setText("クリックまたはタップして日付を入力してください。");
        sdt.getSDTContent().getChildObjects().add(tr);

        //ユーザーがフォームフィールドを編集することのみを許可する
        doc.protect(ProtectionType.Allow_Only_Form_Fields, "password");

        //ドキュメントを保存する
        doc.saveToFile("記入用フォーム.docx", FileFormat.Docx_2013);
    }
}

Java:Word ドキュメントに記入可能なフォームを作成する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Spire.Office 8.4.1のリリースを発表できることを嬉しく思います。このバージョンでは、Spire.PDFはPDF文書の印刷速度とPDFを画像に変換する速度を向上しました。Spire.DocはWord 2013のテーブルの新しいスタイルをサポートしています。Spire.SpreadsheetはPDF文書への保存をサポートしています。さらに、多くの既知の問題も修正しました。詳細は以下の内容を読んでください。

このバージョンでは、Spire.Doc,Spire.PDF,Spire.XLS,Spire.Email,Spire.DocViewer, Spire.PDFViewer,Spire.Presentation,Spire.Spreadsheet, Spire.OfficeViewer, Spire.Barcode, Spire.DataExportの最新バージョンが含まれています。

DLL Versions:
  • Spire.Doc.dll v11.4.12
  • Spire.Pdf.dll v9.4.12
  • Spire.XLS.dll v13.4.1
  • Spire.Presentation.dll v8.4.1
  • Spire.Email.dll v6.3.2
  • Spire.DocViewer.Forms.dll v8.3.0
  • Spire.PdfViewer.Forms.dll v7.10.0
  • Spire.PdfViewer.Asp.dll v7.10.0
  • Spire.Spreadsheet.dll v7.4.1
  • Spire.OfficeViewer.Forms.dll v8.4.1
  • Spire.Barcode.dll v7.2.1
  • Spire.DataExport.dll v4.8.0
  • Spire.DataExport.ResourceMgr.dll v2.1.0
ここで Spire.Office 8.4.1をダウンロードする:

このリリースで行われた変更のリストは次のとおりです

Spire.PDF

カテゴリー ID 説明
New feature SPIREPDF-1096
SPIREPDF-2427
SPIREPDF-2994
SPIREPDF-3836
PDFの印刷速度が向上しました。
New feature SPIREPDF-2287
SPIREPDF-4084
PDFを画像に変換する速度が向上しました。
Bug SPIREPDF-1608 Firefoxで暗号化されたPDF文書を開くと、正しいパスワードを入力する際にパスワードが正しくないことを提示する問題が修正されました。
Bug SPIREPDF-3499 PDFをWordに変換した後にテーブルが失われていた問題が修正されました。
Bug SPIREPDF-3847 PDFをWordに変換した後にテキストの順序が正しくない問題が修正されました。
Bug SPIREPDF-4078 PDFをWordに変換した後に内容が乱れる問題が修正されました。
Bug SPIREPDF-5313 PDF文書の画像を圧縮するとPDF文書が大きくなる問題が修正されました。
Bug SPIREPDF-5755 OFDからPDFに変換する際に余分なスペースが発生していた問題を修正しました。
Bug SPIREPDF-5800 別のPDF文書に添付されたPDF文書をPDF/A-3形式に変換した後、形式が標準に準拠していなかった問題が修正されました。
Bug SPIREPDF-5849 PDF文書からすべてのテキストを抽出したときに一部のテキストが抽出されなかった問題が修正されました。
Bug SPIREPDF-5856 PDF文書からテキストを抽出する際にテキストが繰り返し抽出されていた問題が修正されました。
Bug SPIREPDF-5857 PDFをSVGに変換した後に文字が表の枠線を超えていた問題が修正されました。
Bug SPIREPDF-5884 PDFをWordに変換した後にコンテンツのレイアウトが正しくない問題が修正されました。
Bug SPIREPDF-5886 PDF文書を印刷する際にスタンプが失われていた問題が修正されました。
Bug SPIREPDF-5887 page.CreateTemplate()を呼び出する際にアプリケーションが「System.NullReferenceException:“Object reference not set to an instance of an object.”」をスローする問題が修正されました。
Bug SPIREPDF-5890 PDFを画像に変換する際にアプリケーションが「System.ArgumentException」をスローする問題が修正されました。
Bug SPIREPDF-5891 テキスト検索する際にアプリケーションが「System.ArgumentOutOfRangeException」をスローする問題が修正されました。
Bug SPIREPDF-5911 文書を両面印刷する際に、裏面のページ方向が逆になる問題が修正されました。
Bug SPIREPDF-5915 単一フォームフィールドのフラット化されたフィールド値の位置が正しくない問題を修正しました。
Bug SPIREPDF-5919 XPSをPDFに変換した後にテキストが失われていた問題が修正されました。
Bug SPIREPDF-5922 PDF文書をマージする際にアプリケーションが「System.ArgumentException」をスローする問題が修正されました。

Spire.Doc

カテゴリー ID 説明
New feature SPIREDOC-7359 Word 2013のテーブルの新しいスタイルをサポートしました。
Bug SPIREDOC-3430 WordをHTMLに変換した後にグラフが失われていた問題が修正されました。
Bug SPIREDOC-8506 WordをPDFに変換した後に修正を受けた効果が正しくない問題が修正されました。
Bug SPIREDOC-9176 RTFをPDFに変換した後に画像が失われていた問題が修正されました。
Bug SPIREDOC-9203 DocをDocxに変換した後にページ方向が縦から横に変化する問題が修正されました。
Bug SPIREDOC-9215 文書をロードしてから新しい文書に保存すると、画像が失われる問題が修正されました。
Bug SPIREDOC-9230 WordをHTMLに変換した後にフォントのスタイルが正しくない問題が修正されました。
Bug SPIREDOC-9256 フィールドの更新後にフィールド値が失われていた問題が修正されました。
Bug SPIREDOC-9259 WordをPDFに変換した後に画像のハイパーリンク位置が変更された問題が修正されました。
Bug SPIREDOC-9262 Word文書をロードする際にアプリケーションが「Cannot insert an object of type CustomXml into the Body」をスローする問題が修正されました。

Spire.Spreadsheet

カテゴリー ID 説明
New feature SPREADSHEET-82 PDF文書への保存がサポートされています。
this.spreadsheet1.SaveToFile("1.pdf", FileFormatType.PDF);

Spire.Presentation

カテゴリー ID 説明
Bug SPIREPPT-2224 PPTを画像に変換する際にプログラムが無限ループに入り、メモリが消耗される問題を修正しました。

Spire.Doc 11.4.12のリリースを発表できることを嬉しく思います。今回のアップデートでは、Word 2013のテーブルの新しいスタイルをサポートしました。同時に、WordからPDFへの変換機能も強化されました。また、文書をロードしてから新しい文書に保存した後に画像が失われた問題など、多くの既知の問題が修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
New feature SPIREDOC-7359 Word 2013のテーブルの新しいスタイルをサポートしました。
Bug SPIREDOC-3430 WordをHTMLに変換した後にグラフが失われていた問題が修正されました。
Bug SPIREDOC-8506 WordをPDFに変換した後に修正を受けた効果が正しくない問題が修正されました。
Bug SPIREDOC-9176 RTFをPDFに変換した後に画像が失われていた問題が修正されました。
Bug SPIREDOC-9203 DocをDocxに変換した後にページ方向が縦から横に変化する問題が修正されました。
Bug SPIREDOC-9215 文書をロードしてから新しい文書に保存すると、画像が失われる問題が修正されました。
Bug SPIREDOC-9230 WordをHTMLに変換した後にフォントのスタイルが正しくない問題が修正されました。
Bug SPIREDOC-9256 フィールドの更新後にフィールド値が失われていた問題が修正されました。
Bug SPIREDOC-9259 WordをPDFに変換した後に画像のハイパーリンク位置が変更された問題が修正されました。
Bug SPIREDOC-9262 Word文書をロードする際にアプリケーションが「Cannot insert an object of type CustomXml into the Body」をスローする問題が修正されました。
ここで Spire.Doc 11.4.12をダウンロードする

Spire.PDF 9.4.12のリリースを発表できることを嬉しく思います。このバージョンでは、PDF文書の印刷速度とPDFを画像に変換する速度が向上しました。PDFからWord、SVG、および画像への変換機能も強化されました。また、PDF文書の画像を圧縮するとPDF文書が大きくなるなど、多くの既知の問題が修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
New feature SPIREPDF-1096
SPIREPDF-2427
SPIREPDF-2994
SPIREPDF-3836
PDFの印刷速度が向上しました。
New feature SPIREPDF-2287
SPIREPDF-4084
PDFを画像に変換する速度が向上しました。
Bug SPIREPDF-1608 Firefoxで暗号化されたPDF文書を開くと、正しいパスワードを入力する際にパスワードが正しくないことを提示する問題が修正されました。
Bug SPIREPDF-3499 PDFをWordに変換した後にテーブルが失われていた問題が修正されました。
Bug SPIREPDF-3847 PDFをWordに変換した後にテキストの順序が正しくない問題が修正されました。
Bug SPIREPDF-4078 PDFをWordに変換した後に内容が乱れる問題が修正されました。
Bug SPIREPDF-5313 PDF文書の画像を圧縮するとPDF文書が大きくなる問題が修正されました。
Bug SPIREPDF-5755 OFDからPDFに変換する際に余分なスペースが発生していた問題を修正しました。
Bug SPIREPDF-5800 別のPDF文書に添付されたPDF文書をPDF/A-3形式に変換した後、形式が標準に準拠していなかった問題が修正されました。
Bug SPIREPDF-5849 PDF文書からすべてのテキストを抽出したときに一部のテキストが抽出されなかった問題が修正されました。
Bug SPIREPDF-5856 PDF文書からテキストを抽出する際にテキストが繰り返し抽出されていた問題が修正されました。
Bug SPIREPDF-5857 PDFをSVGに変換した後に文字が表の枠線を超えていた問題が修正されました。
Bug SPIREPDF-5884 PDFをWordに変換した後にコンテンツのレイアウトが正しくない問題が修正されました。
Bug SPIREPDF-5886 PDF文書を印刷する際にスタンプが失われていた問題が修正されました。
Bug SPIREPDF-5887 page.CreateTemplate()を呼び出する際にアプリケーションが「System.NullReferenceException:“Object reference not set to an instance of an object.”」をスローする問題が修正されました。
Bug SPIREPDF-5890 PDFを画像に変換する際にアプリケーションが「System.ArgumentException」をスローする問題が修正されました。
Bug SPIREPDF-5891 テキスト検索する際にアプリケーションが「System.ArgumentOutOfRangeException」をスローする問題が修正されました。
Bug SPIREPDF-5911 文書を両面印刷する際に、裏面のページ方向が逆になる問題が修正されました。
Bug SPIREPDF-5915 単一フォームフィールドのフラット化されたフィールド値の位置が正しくない問題を修正しました。
Bug SPIREPDF-5919 XPSをPDFに変換した後にテキストが失われていた問題が修正されました。
Bug SPIREPDF-5922 PDF文書をマージする際にアプリケーションが「System.ArgumentException」をスローする問題が修正されました。
ここで Spire.PDF 9.4.12をダウンロードする

背景色や画像は、ドキュメントをより美しく、注目を集めるものにするのに役立ちます。営業、教育、発表の目的でドキュメントを作成する場合、魅力的な背景色や画像を追加することは非常に有効です。この記事では、Spire.Doc for C++ を使用して、プログラムで Word ドキュメントに背景色や背景画像を追加する方法を説明します。

Spire.Doc for C++ をインストールします

Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。

Spire.Doc for C++ を C++ アプリケーションに統合する方法

Word ドキュメントに背景色を追加する

Spire.Doc for C++ を使えば、Word ドキュメントに背景色を追加するのはとても簡単です。ドキュメントの背景の種類を色に設定し、背景となる色を指定すればよいのです。詳しい手順は以下の通りです。

  • Document クラスのインスタンスを作成します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • Document->GetBackground() メソッドを使用して、ドキュメントの背景を取得します。
  • Background->SetType(BackgroundType::Color) メソッドを使用して、背景の種類を色として設定します。
  • Background->SetColor() メソッドを使用して背景色を設定します。
  • Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
  • C++
#include "Spire.Doc.o.h"

using namespace Spire::Doc;
using namespace Spire::Common;

int main()
{
	//Documentのインスタンスを作成する
	Document* document = new Document();

	//Wordドキュメントを読み込む
	document->LoadFromFile(L"C:/定義を超えた意味.docx");

	//ドキュメントの背景を取得する
	Background* background = document->GetBackground();
	//背景の種類を色に設定する
	background->SetType(BackgroundType::Color);
	//背景色を設定する
	background->SetColor(Color::GetAliceBlue());

	//ドキュメントを保存する
	document->SaveToFile(L"背景色の追加.docx", FileFormat::Docx2013);
	document->Close();
	delete document;
}

C++:Word ドキュメントに背景色や画像を追加する方法

Word ドキュメントにグラデーションの背景を追加する

グラデーションの背景を追加するには、背景の種類をグラデーションに設定し、グラデーションの色を指定し、グラデーションの濃淡変化とスタイルを設定する必要があります。詳しい手順は以下の通りです。

  • Document のインスタンスを作成します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • Document->GetBackground() メソッドを使用して、ドキュメントの背景を取得します。
  • Background->SetType(BackgroundType::Gradient) メソッドを使用して、背景の種類をグラデーションに設定します。
  • Background->GetGradient()->SetColor1() メソッドと Background->GetGradient()->SetColor2() メソッドでグラデーションの色を2色指定します。
  • Background->GetGradient()->SetShadingVariant() メソッドと Background->GetGradient()->SetShadingStyle() メソッドでグラデーションの濃淡変化とスタイルの設定します。
  • Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
  • C++
#include "Spire.Doc.o.h"

using namespace Spire::Doc;
using namespace Spire::Common;

int main()
{
	//Documentのインスタンスを作成する
	Document* document = new Document();

	//Word ドキュメントを読み込む
	document->LoadFromFile(L"C:/定義を超えた意味.docx");

	//ドキュメントの背景を取得する
	Background* background = document->GetBackground();
	//背景の種類をグラデーションにする
	background->SetType(BackgroundType::Gradient);

	//グラデーション色を2色指定する 
	background->GetGradient()->SetColor1(Color::GetWhite());
	background->GetGradient()->SetColor2(Color::GetLightBlue());

	//グラデーションの濃淡変化とスタイルを設定する
	background->GetGradient()->SetShadingVariant(GradientShadingVariant::ShadingDown);
	background->GetGradient()->SetShadingStyle(GradientShadingStyle::Horizontal);

	//ドキュメントを保存する
	document->SaveToFile(L"グラデーション背景の追加.docx", FileFormat::Docx2013);
	document->Close();
	delete document;
}

C++:Word ドキュメントに背景色や画像を追加する方法

Word ドキュメントに背景画像を追加する

Word ドキュメントに背景画像を追加するには、背景の種類を画像に設定し、背景となる画像を挿入する必要があります。詳しい手順は以下の通りです。

  • Document のインスタンスを作成します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • Document->GetBackground() メソッドを使用して、ドキュメントの背景を取得します。
  • Background->SetType(BackgroundType::Picture) メソッドを使用して、背景の種類を画像に設定します。
  • Background->SetPicture() メソッドを使用して、背景画像を設定します。
  • Document->SaveToFile() メソッドを使用してドキュメントを保存します。
  • C++
#include "Spire.Doc.o.h"

using namespace Spire::Doc;

int main()
{
	//Documentのインスタンスを作成する
	Document* document = new Document();

	//Word ドキュメントを読み込む
	document->LoadFromFile(L"C:/定義を超えた意味.docx");

	//ドキュメントの背景を取得する
	Background* background = document->GetBackground();
	//背景の種類を画像にする
	background->SetType(BackgroundType::Picture);

	//背景画像を設定する
	background->SetPicture(L"C:/背景画像.jpeg");

	//ドキュメントを保存する
	document->SaveToFile(L"背景画像の追加.docx", FileFormat::Docx2013);
	document->Close();
	delete document;
}

C++:Word ドキュメントに背景色や画像を追加する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

時には、関連する複数の Word ドキュメントを統合して、より完全なドキュメントを作成する必要があります。MS Word でドキュメントを結合するには、手動でコンテンツをコピー&ペーストするか、他のドキュメントからコンテンツをインポートする必要があります。しかし、多くのドキュメントを結合する場合、この方法は面倒なことがあります。幸いにも、Spire.Doc for Java は、プログラミングによって Word ドキュメントを結合する2つの簡単な方法を提供しています。この記事では、Word ドキュメントを結合するための詳細な手順を説明します。

Spire.Doc for Java をインストールします

まず、Spire. Doc for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>10.7.4</version>
    </dependency>
</dependencies>

ドキュメント全体の挿入によるドキュメントの結合

Spire.Doc for Java が提供する Document.insertTextFromFile() というメソッドは、他のドキュメントを丸ごと挿入して Word ドキュメントを結合し、挿入内容を新しいページから始めることができます。

ファイル全体を挿入してドキュメントを結合する詳細な手順は、以下の通りです。

  • Document のオブジェクトを作成し、Word ドキュメントを読み込みます。
  • Document.insertTextFromFile() メソッドを使用して、読み込んだドキュメントに別の Word ドキュメントを完全に挿入します。
  • Document.saveToFile() メソッドを使用して、結果ドキュメントを保存します。
  • Java
import com.spire.doc.*;

public class MergeByInserting {
    public static void main(String[] args) {

        //Documentのオブジェクトを作成し、Wordドキュメントを読み込む
        Document document = new Document("C:/宇宙の視野.docx");

        //別のWordドキュメントをこのドキュメントに完全に挿入する
        document.insertTextFromFile("C:/狼はどこに行ったの.docx", FileFormat.Docx_2013);

        //結果ドキュメントを保存する
        document.saveToFile("結合の結果.docx", FileFormat.Docx_2013);
    }
}

Java:Word ドキュメントを結合する方法

コンテンツのコピーによるドキュメントの結合

新しいページを始めずにドキュメントを結合したい場合、他のドキュメントの内容をクローンしてドキュメントの末尾に追加することができます。

コンテンツをコピーしてドキュメントを結合する詳しい手順は、以下のとおりです。

  • Document のオブジェクトを2つ作成し、2つの Word ドキュメントを読み込みます。
  • 2つ目のドキュメントをループして Document.getSections() メソッドですべてのセクションを取得し、すべてのセクションをループして Section.getBod().getChildObjects() メソッドでその子オブジェクトを取得します。次に、Document.getLastSection() メソッドで最初のドキュメントの最後のセクションを取得し、Body.getChildObjects().add() メソッドで最初のドキュメントの最後のセクションに子供オブジェクトを追加します。
  • Document.saveToFile() メソッドを使用して、結果ドキュメントを保存します。
  • Java
import com.spire.doc.*;

public class MergeByCopying {
    public static void main(String[] args) {

        //2つのDocumentオブジェクトを作成し、2つのWordドキュメントを読み込む
        Document document1 = new Document("C:/宇宙の視野.docx");
        Document document2 = new Document("C:/狼はどこに行ったの.docx");

        //2つ目のドキュメントをループして、すべてのセクションを取得する
        for (Object sectionObj : document2.getSections()) {
            Section sec=(Section)sectionObj;

            //2つ目のドキュメントのセクションをループして、その子オブジェクトを取得する
            for (Object docObj : sec.getBody().getChildObjects()) {
                DocumentObject obj=(DocumentObject)docObj;

                //最初のドキュメントの最後のセクションを取得する
                Section lastSection = document1.getLastSection();

                //最初のドキュメントの最後のセクションに子オブジェクトを追加する
                Body body = lastSection.getBody();
                body.getChildObjects().add(obj.deepClone());
            }
        }

        //結果ドキュメントを保存する
        document1.saveToFile("結合の結果.docx", FileFormat.Docx_2013);
    }
}

Java:Word ドキュメントを結合する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Spire.PDF for Java 9.4.9のリリースを発表できることをうれしく思います。このバージョンは、PDFストリーム文書が暗号化されているかどうかを判断する機能をサポートしています。また、PDFからWord、HTML、および画像への変換機能も強化されました。さらに、リフレクションで製品を使用するとエラーが発生する問題など、いくつかの既知の問題が修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
New feature SPIREPDF-5855 PDFストリーム文書が暗号化されているかどうかを判断する機能をサポートしています。
boolean result = PdfDocument.isPasswordProtected(PDFstream); 
Bug SPIREPDF-5323 PDFを画像に変換する際、内容が切り取られていた問題が修正されました。
Bug SPIREPDF-5652 PDFをWordに変換する際、フォント名の前後に余分な文字があるためにテキストコンテンツが誤って表示される問題が修正されました。
Bug SPIREPDF-5878 リフレクションで製品を使用する際、アプリケーションが「java.lang.NullPointerException: Cannot invoke 'java.io.InputStream.close()' because 'a' is null」をスローする問題が修正されました。
Bug SPIREPDF-5879 PDFを画像に変換する際、メモリ不足の問題が修正されました。
Bug SPIREPDF-5914 PDFをHTMLに変換する際、太字フォントの効果が失われる問題が修正されました。
Bug SPIREPDF-5926 PDFを画像に変換する際、アプリケーションが「StringIndexOutOfBoundsException」をスローする問題が修正されました。
ここでSpire.PDF for Java 9.4.9をダウンロードする

Word には、入力時にドキュメント内の単語数をカウントするワードカウンターが用意されています。それ以外にも、Word はページ数、段落数、スペースの有無による文字数もカウントしています。この記事では、Spire.Doc for Java を使用して、プログラムで既存の Word ドキュメント内の単語数または文字数をカウントする方法を説明します。

Spire.Doc for Java をインストールします

まず、Spire. Doc for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>11.4.2</version>
    </dependency>
</dependencies>

Word ドキュメント内の単語数のカウント

Spire.Doc for Java が提供する Document.getBuiltinDocumentProperties().getWordCount() メソッドは、Word ドキュメントの単語数を取得できます。また、その他にも文字数やスペースを含む文字数をカウントできるメソッドもあります。

  • Document のインスタンスを作成します。
  • Document.loadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • Document.getBuiltinDocumentProperties().getWordCount() メソッドを使用して、単語数をカウントします。
  • Document.getBuiltinDocumentProperties().getCharCount() メソッドを使用して、空白のない文字数をカウントします。
  • Document.getBuiltinDocumentProperties().getCharCountWithSpace() メソッドを使用して、スペースを含む文字数をカウントします。
  • Java
import com.spire.doc.*;
public class WordCount {
    public static void main(String[] args) {

        //Documentのインスタンスを作成する
        Document document = new Document();

        //Word ドキュメントを読み込む
        document.loadFromFile("C:/宇宙の視野.docx");

        //単語数をカウントする
        System.out.println("単語数:" + document.getBuiltinDocumentProperties().getWordCount());

        //スペースを含まない文字数を数える
        System.out.println("文字数:" + document.getBuiltinDocumentProperties().getCharCount());

        //スペースを含む文字数をカウントする
        System.out.println("スペースを含む文字数:" + document.getBuiltinDocumentProperties().getCharCountWithSpace());
    }
}

Java:Word ドキュメントの単語数をカウントする方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Excel にはデータを記録する以外に計算機能があり、データの分析や加工を効率的かつ簡単に行うことができます。Excel の計算ツールには、数式と関数の2つがあります。数式はユーザーが定義した計算文であり、関数はあらかじめ定義された数式です。ユーザーは、セルに自分の数式を入力するか、関数を呼び出すだけで計算することができます。この記事では、Spire.XLS for Java を使用して、Excel ワークブックに数式や関数を挿入したり、読み込んだりする方法を紹介します。

Spire.XLS for Java をインストールします

まず、Spire.XLS for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls</artifactId>
        <version>12.12.4</version>
    </dependency>
</dependencies>

Excel ワークシートに数式や関数を挿入する

Spire.XLS for Java では、特定のセルに数式や関数を追加するための Worksheet.getCellRange().setFormula() メソッドを用意しています。ワークシートに数式や関数を挿入する詳細な手順は以下の通りです。

  • Workbook のオブジェクトを作成します。
  • Workbook.getWorksheets().get() メソッドを使用して、最初のワークシートを取得します。
  • セルにデータを書き込み、セルの書式を設定します。
  • Worksheet.getCellRange().setFormula() メソッドを使用して、特定のセルに数式や関数を追加します。
  • Workbook.saveToFile() メソッドを使用して、ワークブックを保存します。
  • Java
import com.spire.xls.*;

public class insertFormulas {
    public static void main(String[] args) {

        //Workbookのオブジェクトを作成する
        Workbook workbook = new Workbook();

        //最初のワークシートを取得する
        Worksheet sheet = workbook.getWorksheets().get(0);

        //currentRow、currentFormulaの2つの変数を宣言する
        int currentRow = 1;
        String currentFormula = null;

        //列の幅を設定する
        sheet.setColumnWidth(1, 32);
        sheet.setColumnWidth(2, 16);

        //セルにデータを書き込む
        sheet.getCellRange(currentRow,1).setValue("テスト用データ");
        sheet.getCellRange(currentRow,2).setNumberValue(1);
        sheet.getCellRange(currentRow,3).setNumberValue(2);
        sheet.getCellRange(currentRow,4).setNumberValue(3);
        sheet.getCellRange(currentRow,5).setNumberValue(4);
        sheet.getCellRange(currentRow,6).setNumberValue(5);

        //セルにテキストを書き込む
        currentRow += 2;
        sheet.getCellRange(currentRow,1).setValue("数式") ; ;
        sheet.getCellRange(currentRow,2).setValue("結果");

        //セルの書式を設定する
        CellRange range = sheet.getCellRange(currentRow,1,currentRow,2);
        range.getStyle().getFont().isBold(true);
        range.getStyle().setKnownColor(ExcelColors.LightGreen1);
        range.getStyle().setFillPattern(ExcelPatternType.Solid);
        range.getStyle().getBorders().getByBordersLineType(BordersLineType.EdgeBottom).setLineStyle(LineStyleType.Medium);

        //算術演算
        currentFormula = "=1/2+3*4";
        sheet.getCellRange(++currentRow,1).setText("'"+ currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //日付関数
        currentFormula = "=TODAY()";
        sheet.getCellRange(++currentRow,1).setText("'"+currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);
        sheet.getCellRange(currentRow,2).getStyle().setNumberFormat("YYYY/MM/DD");

        //時間関数
        currentFormula = "=NOW()";
        sheet.getCellRange(++currentRow,1).setText("'"+currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);
        sheet.getCellRange(currentRow,2).getStyle().setNumberFormat("H:MM AM/PM");

        //IF関数
        currentFormula = "=IF(B1=5,\"Yes\",\"No\")";
        sheet.getCellRange(++currentRow,1).setText("'"+currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //PI関数
        currentFormula = "=PI()";
        sheet.getCellRange(++currentRow,1).setText("'"+currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //三角関数
        currentFormula = "=SIN(PI()/6)";
        sheet.getCellRange(++currentRow,1).setText("'"+currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //計数関数
        currentFormula = "=Count(B1:F1)";
        sheet.getCellRange(++currentRow,1).setText("'"+currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //最大値関数
        currentFormula = "=MAX(B1:F1)";
        sheet.getCellRange(++currentRow,1).setText("'"+currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //平均関数
        currentFormula = "=AVERAGE(B1:F1)";
        sheet.getCellRange(++currentRow,1).setText("'"+currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //和算関数
        currentFormula = "=SUM(B1:F1)";
        sheet.getCellRange(++currentRow,1).setText("'"+currentFormula);
        sheet.getCellRange(currentRow,2).setFormula(currentFormula);

        //ワークブックを保存する
        workbook.saveToFile("数式の挿入.xlsx",FileFormat.Version2013);

    }
}

Java:Excel で数式や関数を挿入、読み込む方法

Excel ワークシートから数式や関数を読み込む

Excel のワークシートで数式を読み込むには、CellRange.hasFormula() メソッドを使用して、セルに数式が含まれているかどうかを検出することができます。そして、CellRange.getFormula() メソッドを使用して、数式がある場合はその数式を取得します。詳しい手順は以下の通りです。

  • Workbook のオブジェクトを作成します。
  • Workbook.loadFromFile() メソッドを使用して Excel ワークブックを読み込みます。
  • Workbook.getWorksheets().get() メソッドを使用してワークシートを取得します。
  • ワークシート内のセルをループ処理します。
  • CellRange.hasFormula() メソッドを使用して、セルに数式が含まれているかどうかを検出します。数式が含まれている場合は、CellRange.getFormula() メソッドを使用して数式を取得し、それを出力します。
  • Workbook.saveToFile() メソッドを使用して、ワークブックを保存します。
  • Java
import com.spire.xls.CellRange;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class readFormulas {

    public static void main(String[] args) {

        //Workbookのオブジェクトを作成する
        Workbook workbook = new Workbook();

        //Excelファイルを読み込む
        workbook.loadFromFile("数式の挿入.xlsx");

        //最初のワークシートを取得する
        Worksheet sheet = workbook.getWorksheets().get(0);

        //B1:B13内のセルをループする
        for (Object cell: sheet.getCellRange("B1:B13")
        ) {
            CellRange cellRange = (CellRange)cell;

            //セルに数式があるかどうかを検出する
            if (cellRange.hasFormula()){

                //数式を出力する
                String certainCell = String.format("セル[%d, %d]に数式がある。",cellRange.getRow(),cellRange.getColumn());
                System.out.println(certainCell + cellRange.getFormula());
            }
        }
    }
}

Java:Excel で数式や関数を挿入、読み込む方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。