Sisipkan Bidang

Ada beberapa cara berbeda untuk menyisipkan kolom ke dalam dokumen:

*menggunakan DocumentBuilder *menggunakan FieldBuilder *menggunakan Aspose.Words Document Object Model (DOM)

Pada artikel ini, kita akan melihat setiap cara secara lebih rinci dan menganalisis cara menyisipkan bidang tertentu menggunakan opsi ini.

Memasukkan Bidang ke dalam Dokumen menggunakan DocumentBuilder

Di Aspose.Words, metode InsertField digunakan untuk menyisipkan kolom baru ke dalam dokumen. Parameter pertama menerima kode field lengkap dari field yang akan disisipkan. Parameter kedua bersifat opsional dan memungkinkan hasil bidang diatur secara manual. Jika ini tidak disediakan maka kolom tersebut diperbarui secara otomatis. Anda dapat meneruskan null atau kosong ke parameter ini untuk menyisipkan bidang dengan nilai bidang kosong. Jika Anda tidak yakin tentang sintaks kode bidang tertentu, buat bidang dalam Microsoft Word terlebih dahulu dan alihkan untuk melihat kode bidangnya.

Contoh kode berikut menunjukkan cara menyisipkan bidang gabungan ke dalam dokumen menggunakan DocumentBuilder:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.InsertField(@"MERGEFIELD MyFieldName \* MERGEFORMAT");
doc.Save(ArtifactsDir + "WorkingWithFields.InsertField.docx");

Teknik yang sama digunakan untuk menyisipkan bidang yang disarangkan di dalam bidang lain.

Contoh kode berikut menunjukkan cara menyisipkan kolom yang disarangkan ke dalam kolom lain menggunakan DocumentBuilder:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
for (int i = 0; i < 5; i++)
builder.InsertBreak(BreakType.PageBreak);
builder.MoveToHeaderFooter(HeaderFooterType.FooterPrimary);
// We want to insert a field like this:
// { IF {PAGE} <> {NUMPAGES} "See Next Page" "Last Page" }
Field field = builder.InsertField(@"IF ");
builder.MoveTo(field.Separator);
builder.InsertField("PAGE");
builder.Write(" <> ");
builder.InsertField("NUMPAGES");
builder.Write(" \"See Next Page\" \"Last Page\" ");
field.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertNestedFields.docx");

Tentukan Lokal di Tingkat Bidang

Pengenal bahasa adalah singkatan numerik standar internasional untuk bahasa di suatu negara atau wilayah geografis. Dengan Aspose.Words, Anda dapat menentukan Lokal di tingkat bidang menggunakan properti LocaleId, yang mendapatkan atau menetapkan ID lokal bidang tersebut.

Contoh kode berikut menunjukkan cara menggunakan opsi ini:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
DocumentBuilder builder = new DocumentBuilder();
Field field = builder.InsertField(FieldType.FieldDate, true);
field.LocaleId = 1049;
builder.Document.Save(ArtifactsDir + "WorkingWithFields.SpecifylocaleAtFieldlevel.docx");

Sisipkan Bidang yang Belum Diketik/Kosong

Jika Anda ingin memasukkan kolom yang belum diketik/kosong ({}) seperti yang diizinkan Microsoft Word, Anda dapat menggunakan metode InsertField dengan parameter FieldType.FieldNone. Untuk memasukkan field ke dalam dokumen Word, Anda dapat menekan kombinasi tombol “Ctrl + F9”.

Contoh kode berikut menunjukkan cara menyisipkan kolom kosong ke dalam dokumen:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
FieldUnknown field = (FieldUnknown) builder.InsertField(FieldType.FieldNone, false);
doc.Save(ArtifactsDir + "WorkingWithFields.InsertFieldNone.docx");

Memasukkan Bidang ke dalam Dokumen menggunakan FieldBuilder

Cara alternatif untuk menyisipkan kolom di Aspose.Words adalah kelas FieldBuilder. Ini menyediakan antarmuka yang lancar untuk menentukan sakelar bidang dan nilai argumen sebagai teks, node, atau bahkan bidang bersarang.

Contoh kode berikut menunjukkan cara menyisipkan kolom ke dalam dokumen menggunakan FieldBuilder:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
// Prepare IF field with two nested MERGEFIELD fields: { IF "left expression" = "right expression" "Firstname: { MERGEFIELD firstname }" "Lastname: { MERGEFIELD lastname }"}
FieldBuilder fieldBuilder = new FieldBuilder(FieldType.FieldIf)
.AddArgument("left expression")
.AddArgument("=")
.AddArgument("right expression")
.AddArgument(
new FieldArgumentBuilder()
.AddText("Firstname: ")
.AddField(new FieldBuilder(FieldType.FieldMergeField).AddArgument("firstname")))
.AddArgument(
new FieldArgumentBuilder()
.AddText("Lastname: ")
.AddField(new FieldBuilder(FieldType.FieldMergeField).AddArgument("lastname")));
// Insert IF field in exact location
Field field = fieldBuilder.BuildAndInsert(doc.FirstSection.Body.FirstParagraph);
field.Update();
doc.Save(ArtifactsDir + "Field.InsertFieldUsingFieldBuilder.docx");

Memasukkan Bidang menggunakan DOM

Anda juga dapat menyisipkan berbagai jenis bidang menggunakan Aspose.Words Document Object Model (DOM). Di bagian ini, kita akan melihat beberapa contoh.

Memasukkan Bidang Gabungan ke dalam Dokumen menggunakan DOM

Bidang MERGEFIELD di dokumen Word dapat diwakili oleh kelas FieldMergeField. Anda dapat menggunakan kelas FieldMergeField untuk melakukan operasi berikut:

  • tentukan nama bidang gabungan
  • tentukan format bidang gabungan
  • tentukan teks yang berada di antara pemisah bidang dan ujung bidang gabungan
  • tentukan teks yang akan disisipkan setelah kolom penggabungan jika kolom tersebut tidak kosong
  • tentukan teks yang akan disisipkan sebelum kolom gabungan jika kolom tersebut tidak kosong

Contoh kode berikut menunjukkan cara menambahkan kolom MERGE menggunakan DOM ke paragraf dalam dokumen:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Paragraph para = (Paragraph) doc.GetChildNodes(NodeType.Paragraph, true)[0];
builder.MoveTo(para);
// We want to insert a merge field like this:
// { " MERGEFIELD Test1 \\b Test2 \\f Test3 \\m \\v" }
FieldMergeField field = (FieldMergeField) builder.InsertField(FieldType.FieldMergeField, false);
// { " MERGEFIELD Test1" }
field.FieldName = "Test1";
// { " MERGEFIELD Test1 \\b Test2" }
field.TextBefore = "Test2";
// { " MERGEFIELD Test1 \\b Test2 \\f Test3 }
field.TextAfter = "Test3";
// { " MERGEFIELD Test1 \\b Test2 \\f Test3 \\m" }
field.IsMapped = true;
// { " MERGEFIELD Test1 \\b Test2 \\f Test3 \\m \\v" }
field.IsVerticalFormatting = true;
field.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertMergeFieldUsingDOM.docx");

Memasukkan bidang Mail Merge ADDRESSBLOCK ke dalam Dokumen menggunakan DOM

Bidang ADDRESSBLOCK digunakan untuk memasukkan blok alamat Mail Merge ke dalam dokumen Word. Bidang ADDRESSBLOCK di dokumen Word dapat diwakili oleh kelas FieldAddressBlock. Anda dapat menggunakan kelas FieldAddressBlock untuk melakukan operasi berikut:

  • tentukan apakah akan mencantumkan nama negara/wilayah pada kolom tersebut
  • tentukan apakah akan memformat alamat sesuai dengan negara/wilayah penerima sebagaimana ditentukan oleh POST*CODE (Universal Postal Union 2006)
  • tentukan nama negara/wilayah yang dikecualikan
  • tentukan format nama dan alamat
  • tentukan ID bahasa yang digunakan untuk memformat alamat

Contoh kode berikut menunjukkan cara menambahkan Bidang Mail Merge ADDRESSBLOCK menggunakan DOM ke paragraf dalam dokumen:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Paragraph para = (Paragraph) doc.GetChildNodes(NodeType.Paragraph, true)[0];
builder.MoveTo(para);
// We want to insert a mail merge address block like this:
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 \\f Test3 \\l \"Test 4\" }
FieldAddressBlock field = (FieldAddressBlock) builder.InsertField(FieldType.FieldAddressBlock, false);
// { ADDRESSBLOCK \\c 1" }
field.IncludeCountryOrRegionName = "1";
// { ADDRESSBLOCK \\c 1 \\d" }
field.FormatAddressOnCountryOrRegion = true;
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 }
field.ExcludedCountryOrRegionName = "Test2";
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 \\f Test3 }
field.NameAndAddressFormat = "Test3";
// { ADDRESSBLOCK \\c 1 \\d \\e Test2 \\f Test3 \\l \"Test 4\" }
field.LanguageId = "Test 4";
field.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertMailMergeAddressBlockFieldUsingDOM.docx");

Memasukkan bidang ADVANCE ke dalam Dokumen tanpa menggunakan DocumentBuilder

Bidang ADVANCE digunakan untuk mengimbangi teks berikutnya dalam satu baris ke kiri, kanan, atas atau bawah. Bidang ADVANCE di dokumen Word dapat diwakili oleh kelas FieldAdvance. Anda dapat menggunakan kelas FieldAdvance untuk melakukan operasi berikut:

  • tentukan jumlah titik di mana teks setelah bidang harus dipindahkan secara vertikal dari tepi atas halaman
  • tentukan jumlah titik yang digunakan untuk memindahkan teks setelah bidang secara horizontal dari tepi kiri kolom, bingkai, atau kotak teks
  • tentukan jumlah titik yang digunakan untuk memindahkan teks setelah bidang ke kiri, kanan, atas, atau bawah

Contoh kode berikut menunjukkan cara menambahkan Bidang ADVANCE menggunakan DOM ke paragraf dalam dokumen:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
Paragraph para = (Paragraph) doc.GetChildNodes(NodeType.Paragraph, true)[0];
// We want to insert an Advance field like this:
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 \\x 100 \\y 100 }
FieldAdvance field = (FieldAdvance) para.AppendField(FieldType.FieldAdvance, false);
// { ADVANCE \\d 10 " }
field.DownOffset = "10";
// { ADVANCE \\d 10 \\l 10 }
field.LeftOffset = "10";
// { ADVANCE \\d 10 \\l 10 \\r -3.3 }
field.RightOffset = "-3.3";
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 }
field.UpOffset = "0";
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 \\x 100 }
field.HorizontalPosition = "100";
// { ADVANCE \\d 10 \\l 10 \\r -3.3 \\u 0 \\x 100 \\y 100 }
field.VerticalPosition = "100";
field.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertAdvanceFieldWithOutDocumentBuilder.docx");

Memasukkan bidang ASK ke dalam Dokumen tanpa menggunakan DocumentBuilder

Bidang ASK digunakan untuk meminta pengguna agar teks ditetapkan ke dokumen Bookmark di Word. Bidang ASK di dokumen Word dapat diwakili oleh kelas FieldAsk. Anda dapat menggunakan kelas FieldAsk untuk melakukan operasi berikut:

  • tentukan nama penandanya
  • tentukan respons pengguna default (nilai awal yang terdapat di jendela prompt)
  • tentukan apakah respons pengguna harus diterima satu kali per operasi mail merge
  • tentukan teks prompt (judul jendela prompt)

Contoh kode berikut menunjukkan cara menambahkan Bidang ASK menggunakan DOM ke paragraf dalam dokumen:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
Paragraph para = (Paragraph) doc.GetChildNodes(NodeType.Paragraph, true)[0];
// We want to insert an Ask field like this:
// { ASK \"Test 1\" Test2 \\d Test3 \\o }
FieldAsk field = (FieldAsk) para.AppendField(FieldType.FieldAsk, false);
// { ASK \"Test 1\" " }
field.BookmarkName = "Test 1";
// { ASK \"Test 1\" Test2 }
field.PromptText = "Test2";
// { ASK \"Test 1\" Test2 \\d Test3 }
field.DefaultResponse = "Test3";
// { ASK \"Test 1\" Test2 \\d Test3 \\o }
field.PromptOnceOnMailMerge = true;
field.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertASKFieldWithOutDocumentBuilder.docx");

Memasukkan bidang AUTHOR ke dalam Dokumen tanpa menggunakan DocumentBuilder

Bidang AUTHOR digunakan untuk menentukan nama pembuat Dokumen dari properti Document. Bidang AUTHOR di dokumen Word dapat diwakili oleh kelas FieldAuthor. Anda dapat menggunakan kelas FieldAuthor untuk melakukan operasi berikut:

  • tentukan nama penulis dokumen

Contoh kode berikut menunjukkan cara menambahkan Bidang AUTHOR menggunakan DOM ke paragraf dalam dokumen:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
Paragraph para = (Paragraph) doc.GetChildNodes(NodeType.Paragraph, true)[0];
// We want to insert an AUTHOR field like this:
// { AUTHOR Test1 }
FieldAuthor field = (FieldAuthor) para.AppendField(FieldType.FieldAuthor, false);
field.AuthorName = "Test1"; // { AUTHOR Test1 }
field.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertAuthorField.docx");

Memasukkan bidang INCLUDETEXT ke dalam Dokumen tanpa menggunakan DocumentBuilder

Bidang INCLUDETEXT menyisipkan teks dan grafik yang terdapat dalam dokumen yang disebutkan dalam kode bidang. Anda dapat menyisipkan seluruh dokumen atau sebagian dokumen yang dirujuk oleh penanda. Bidang dalam dokumen Word ini diwakili oleh INCLUDETEXT. Anda dapat menggunakan kelas FieldIncludeText untuk melakukan operasi berikut:

  • tentukan nama penanda dokumen yang disertakan
  • tentukan lokasi dokumen

Contoh kode berikut menunjukkan cara menambahkan kolom INCLUDETEXT menggunakan DOM ke paragraf dalam dokumen:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
Paragraph para = new Paragraph(doc);
// We want to insert an INCLUDETEXT field like this:
// { INCLUDETEXT "file path" }
FieldIncludeText fieldIncludeText = (FieldIncludeText) para.AppendField(FieldType.FieldIncludeText, false);
fieldIncludeText.BookmarkName = "bookmark";
fieldIncludeText.SourceFullName = MyDir + "IncludeText.docx";
doc.FirstSection.Body.AppendChild(para);
fieldIncludeText.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertIncludeFieldWithoutDocumentBuilder.docx");

Memasukkan bidang TOA ke dalam Dokumen tanpa menggunakan DocumentBuilder

Bidang TOA (Tabel Otoritas) membuat dan menyisipkan tabel otoritas. Bidang TOA mengumpulkan entri yang ditandai dengan bidang TA (Entri Tabel Otoritas). Microsoft Office Word menyisipkan bidang TOA ketika Anda mengklik Sisipkan Tabel Otoritas di grup Tabel Otoritas pada tab References. Saat Anda melihat bidang TOA di dokumen Anda, sintaksnya terlihat seperti ini:

{ TOA [Switches ] }

Contoh kode berikut menunjukkan cara menambahkan kolom TOA menggunakan DOM ke paragraf dalam dokumen:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
Paragraph para = new Paragraph(doc);
// We want to insert TA and TOA fields like this:
// { TA \c 1 \l "Value 0" }
// { TOA \c 1 }
FieldTA fieldTA = (FieldTA) para.AppendField(FieldType.FieldTOAEntry, false);
fieldTA.EntryCategory = "1";
fieldTA.LongCitation = "Value 0";
doc.FirstSection.Body.AppendChild(para);
para = new Paragraph(doc);
FieldToa fieldToa = (FieldToa) para.AppendField(FieldType.FieldTOA, false);
fieldToa.EntryCategory = "1";
doc.FirstSection.Body.AppendChild(para);
fieldToa.Update();
doc.Save(ArtifactsDir + "WorkingWithFields.InsertTOAFieldWithoutDocumentBuilder.docx");