LoginSignup
1

More than 3 years have passed since last update.

C# Wordでフィールドを作成

Posted at

Spire.Docは下図のように様々なフィールド操作を行うことができます。

f:id:lendoris:20210220120829p:plain

今回はSpire.Docを使ってFieldDate(日付),FieldIf及びTOC(目次)といったフィールドの作成する方法を紹介します。

下準備

1.E-iceblueの公式サイトからFree Spire.Doc for .NET無料版をダウンロードしてください。

f:id:lendoris:20210220120858p:plain

2.Visual Studioを起動して新規プロジェクトを作成してから、インストールされたファイルにあった相応しいDoc.dllを参照に追加してください。(Net 4.0を例としたら、デフォルトパスは“Bin→NET4.0→Spire.Doc.dll”というようです。)

FieldDate 

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;

namespace ConsoleApplication31
{
    class Program
    {
        static void Main(string[] args)
        {

            //word objectを作成します。
            Document document = new Document();

            //sectionとparagraphを追加します。
            Section section = document.AddSection();
            Paragraph paragraph = section.AddParagraph();

            //paragraphにテキストを追加します。
            paragraph.AppendText("今日の日付: ");

            //日付フィールドを設定します。
            Field field = paragraph.AppendField("Date", FieldType.FieldData) as Field;
            field.Code = @"DATE  \@" + "\"yyyy年MM月dd日 \"";

            //保存します。
            document.SaveToFile("Sample.docx", FileFormat.Docx2013);


        }
    }
}

 

f:id:lendoris:20210220121001p:plain

 

FieldIf

IFフィールドを使うと、条件に応じて結果を分けることができます。 (IFフィールドの演算子の後はスペース必要)

{IF 条件  真の場合  偽の場合}


using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using Spire.Doc.Interface;

namespace ConsoleApplication31
{
    class Program
    {
        static void Main(string[] args)
        {


            Document document = new Document();
            Section section = document.AddSection();
            Paragraph paragraph = section.AddParagraph();

            //CreateFieldメソッドを使用して値を指定します。
            CreateIfField(document, paragraph);
            string[] fieldName = { "Count" };
            string[] fieldValue = { "100" };

            //Ifフィールドに値をマージします。
            document.MailMerge.Execute(fieldName, fieldValue);

            //フィールドを更新します。
            document.IsUpdateFields = true;

            //保存します
            document.SaveToFile("sample.docx", FileFormat.Docx);
        }

        static void CreateIfField(Document document, Paragraph paragraph)
        {
             
            //Ifフィールドを追加して条件を設定します。
            IfField ifField = new IfField(document);
            ifField.Type = FieldType.FieldIf;

            ifField.Code = "IF ";
            paragraph.Items.Add(ifField);
            paragraph.AppendField("Count", FieldType.FieldMergeField);
            paragraph.AppendText(" > ");
            paragraph.AppendText("\"60\" ");
            paragraph.AppendText("\"合格\" ");
            paragraph.AppendText("\"不合格\"");
            IParagraphBase end = document.CreateParagraphItem(ParagraphItemType.FieldMark);
            (end as FieldMark).Type = FieldMarkType.FieldEnd;
            paragraph.Items.Add(end);
            ifField.End = end as FieldMark;
        }
    }
}

TOC

AppendTOC()メソッドで直接にTOCを追加できます。

 

using Spire.Doc;
using Spire.Doc.Documents;

namespace ConsoleApplication31
{
    class Program
    {
        static void Main(string[] args)
        {
            Document document = new Document();
            Section section = document.AddSection();
            Paragraph paragraph = section.AddParagraph();

            //TOCを追加します
            paragraph.AppendTOC(1, 3);

            //段落にテキストを追加します。
            Paragraph para1 = section.AddParagraph();
            para1.AppendText("Head1");
            para1.ApplyStyle(BuiltinStyle.Heading1);

            Paragraph para2 = section.AddParagraph();
            para2.AppendText("Head2");
            para2.ApplyStyle(BuiltinStyle.Heading2);

            //TOCを更新します
            document.UpdateTableOfContents();

            //保存します
            document.SaveToFile("TOC.docx", FileFormat.Docx);

        }
    }
}

f:id:lendoris:20210220121101p:plain

 

 

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1