Terapkan Pemformatan Kustom ke Bidang
Terkadang pengguna perlu menerapkan pemformatan khusus pada bidang. Pada artikel ini, kita akan melihat beberapa contoh bagaimana hal ini dapat dilakukan.
Untuk mempelajari opsi lebih lanjut, lihat daftar lengkap properti untuk setiap jenis bidang di kelas terkait di Ruang nama bidang.
Cara Menerapkan Pemformatan Kustom pada Hasil Bidang
Aspose.Words menyediakan API untuk pemformatan khusus hasil bidang. Anda dapat mengimplementasikan antarmuka IFieldResultFormatter untuk mengontrol bagaimana hasil bidang diformat. Anda dapat menerapkan saklar format numerik, yaitu # “#.##”, saklar format tanggal/waktu, yaitu @ “dd.MM.yyyy”, dan saklar format angka, yaitu * Ordinal.
Contoh kode berikut menunjukkan cara menerapkan pemformatan khusus untuk hasil bidang:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
doc.FieldOptions.ResultFormatter = new FieldResultFormatter("[{0:N2}]", null); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
Field field = builder.InsertField("=-1234567.89 \\# \"### ### ###.000\"", null); | |
field.Update(); | |
doc.Save(ArtifactsDir + "WorkingWithFields.FormatFieldResult.docx"); |
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
class FieldResultFormatter : IFieldResultFormatter | |
{ | |
public FieldResultFormatter(string numberFormat, string dateFormat) | |
{ | |
mNumberFormat = numberFormat; | |
mDateFormat = dateFormat; | |
} | |
public FieldResultFormatter() | |
: this(null, null) | |
{ | |
} | |
public override string FormatNumeric(double value, string format) | |
{ | |
mNumberFormatInvocations.Add(new object[] { value, format }); | |
return string.IsNullOrEmpty(mNumberFormat) | |
? null | |
: string.Format(mNumberFormat, value); | |
} | |
public override string FormatDateTime(DateTime value, string format, CalendarType calendarType) | |
{ | |
mDateFormatInvocations.Add(new object[] { value, format, calendarType }); | |
return string.IsNullOrEmpty(mDateFormat) | |
? null | |
: string.Format(mDateFormat, value); | |
} | |
public override string Format(string value, GeneralFormat format) | |
{ | |
throw new NotImplementedException(); | |
} | |
public override string Format(double value, GeneralFormat format) | |
{ | |
throw new NotImplementedException(); | |
} | |
private readonly string mNumberFormat; | |
private readonly string mDateFormat; | |
private readonly ArrayList mNumberFormatInvocations = new ArrayList(); | |
private readonly ArrayList mDateFormatInvocations = new ArrayList(); | |
} |
Bagaimana mengevaluasi kondisi IF
Jika Anda ingin mengevaluasi kondisi IF
setelah mail merge, Anda bisa menggunakan metode EvaluateCondition yang segera mengembalikan hasil evaluasi ekspresi.
Contoh kode berikut menunjukkan cara menggunakan metode ini:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
DocumentBuilder builder = new DocumentBuilder(); | |
FieldIf field = (FieldIf) builder.InsertField("IF 1 = 1", null); | |
FieldIfComparisonResult actualResult = field.EvaluateCondition(); | |
Console.WriteLine(actualResult); |
Cara Menerapkan Pemformatan Kustom ke Bidang Waktu
Secara default, Aspose.Words memperbarui bidang TIME
dengan format waktu singkat budaya saat ini. Kami menemukan bahwa ada perbedaan antara format Microsoft Word dan format .NET/Windows, dan juga antara versi .NET Framework yang berbeda. Jika Anda ingin memformat bidang TIME
sesuai kebutuhan Anda, Anda dapat melakukannya dengan mengimplementasikan antarmuka IFieldUpdateCultureProvider.
Contoh kode berikut menunjukkan cara menerapkan pemformatan khusus ke bidang TIME
:
// 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(FieldType.FieldTime, true); | |
doc.FieldOptions.FieldUpdateCultureSource = FieldUpdateCultureSource.FieldCode; | |
doc.FieldOptions.FieldUpdateCultureProvider = new FieldUpdateCultureProvider(); | |
doc.Save(ArtifactsDir + "WorkingWithFields.FieldUpdateCulture.pdf"); |
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
class FieldUpdateCultureProvider : IFieldUpdateCultureProvider | |
{ | |
public CultureInfo GetCulture(string name, Field field) | |
{ | |
switch (name) | |
{ | |
case "ru-RU": | |
CultureInfo culture = new CultureInfo(name, false); | |
DateTimeFormatInfo format = culture.DateTimeFormat; | |
format.MonthNames = new[] | |
{ | |
"месяц 1", "месяц 2", "месяц 3", "месяц 4", "месяц 5", "месяц 6", "месяц 7", "месяц 8", | |
"месяц 9", "месяц 10", "месяц 11", "месяц 12", "" | |
}; | |
format.MonthGenitiveNames = format.MonthNames; | |
format.AbbreviatedMonthNames = new[] | |
{ | |
"мес 1", "мес 2", "мес 3", "мес 4", "мес 5", "мес 6", "мес 7", "мес 8", "мес 9", "мес 10", | |
"мес 11", "мес 12", "" | |
}; | |
format.AbbreviatedMonthGenitiveNames = format.AbbreviatedMonthNames; | |
format.DayNames = new[] | |
{ | |
"день недели 7", "день недели 1", "день недели 2", "день недели 3", "день недели 4", | |
"день недели 5", "день недели 6" | |
}; | |
format.AbbreviatedDayNames = new[] | |
{ "день 7", "день 1", "день 2", "день 3", "день 4", "день 5", "день 6" }; | |
format.ShortestDayNames = new[] { "д7", "д1", "д2", "д3", "д4", "д5", "д6" }; | |
format.AMDesignator = "До полудня"; | |
format.PMDesignator = "После полудня"; | |
const string pattern = "yyyy MM (MMMM) dd (dddd) hh:mm:ss tt"; | |
format.LongDatePattern = pattern; | |
format.LongTimePattern = pattern; | |
format.ShortDatePattern = pattern; | |
format.ShortTimePattern = pattern; | |
return culture; | |
case "en-US": | |
return new CultureInfo(name, false); | |
default: | |
return null; | |
} | |
} | |
} |