Menerapkan Pemformatan Khusus ke Bidang
Terkadang pengguna perlu menerapkan pemformatan khusus ke bidang. Pada artikel ini, kita akan melihat beberapa contoh bagaimana hal ini dapat dilakukan.
Untuk mempelajari opsi lainnya, lihat daftar lengkap properti untuk setiap jenis bidang di kelas terkait.
Cara Menerapkan Pemformatan Khusus ke Hasil Bidang
Aspose.Words menyediakan API untuk pemformatan khusus hasil bidang. Anda dapat menerapkan antarmuka IFieldResultFormatter untuk mengontrol bagaimana hasil bidang diformat. Anda dapat menerapkan sakelar format numerik, yaitu # “#.##”, sakelar format tanggal / waktu, yaitu @ “dd.MM.yyyy”, dan sakelar 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-Java | |
DocumentBuilder builder = new DocumentBuilder(); | |
Document document = builder.getDocument(); | |
Field field = builder.insertField("=-1234567.89 \\# \"### ### ###.000\"", null); | |
document.getFieldOptions().setResultFormatter(new FieldResultFormatter("[%0$s]", null)); | |
field.update(); | |
document.save(dataDir+"FormatFieldResult_out.docx"); |
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
public class FieldResultFormatter implements IFieldResultFormatter { | |
private final String mNumberFormat; | |
private final String mDateFormat; | |
private final ArrayList mNumberFormatInvocations = new ArrayList(); | |
private final ArrayList mDateFormatInvocations = new ArrayList(); | |
public FieldResultFormatter(String numberFormat, String dateFormat) { | |
mNumberFormat = numberFormat; | |
mDateFormat = dateFormat; | |
} | |
public FieldResultFormatter() { | |
mNumberFormat = null; | |
mDateFormat = null; | |
} | |
public String format(String arg0, int arg1) { | |
// TODO Auto-generated method stub | |
return null; | |
} | |
public String format(double arg0, int arg1) { | |
// TODO Auto-generated method stub | |
return null; | |
} | |
public String formatNumeric(double value, String format) { | |
// TODO Auto-generated method stub | |
mNumberFormatInvocations.add(new Object[]{value, format}); | |
return (mNumberFormat.isEmpty() || mNumberFormat == null) ? null | |
: String.format(mNumberFormat, value); | |
} | |
public String formatDateTime(Date value, String format, int calendarType) { | |
mDateFormatInvocations | |
.add(new Object[]{value, format, calendarType}); | |
return (mDateFormat.isEmpty() || mDateFormat == null) ? null : String | |
.format(mDateFormat, value); | |
} |
Cara mengevaluasi kondisi IF
Jika Anda ingin mengevaluasi kondisi IF
setelah mail merge, Anda dapat 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-Java | |
DocumentBuilder builder = new DocumentBuilder(); | |
FieldIf field = (FieldIf) builder.insertField("IF 1 = 1", null); | |
int actualResult = field.evaluateCondition(); | |
System.out.println(actualResult); |
Cara Menerapkan Pemformatan Khusus ke Bidang Waktu
Secara default Aspose.Words memperbarui bidang TIME
dengan format waktu singkat budaya saat ini. Jika Anda ingin memformat bidang TIME
sesuai dengan kebutuhan Anda, Anda dapat mencapainya dengan menerapkan 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-Java | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
builder.insertField(FieldType.FIELD_TIME, true); | |
doc.getFieldOptions().setFieldUpdateCultureSource(FieldUpdateCultureSource.FIELD_CODE); | |
doc.getFieldOptions().setFieldUpdateCultureProvider(new FieldUpdateCultureProvider()); | |
doc.save(getArtifactsDir() + "WorkingWithFields.FieldUpdateCulture.pdf"); |
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
private static class FieldUpdateCultureProvider implements IFieldUpdateCultureProvider | |
{ | |
public CultureInfo getCulture(String name, Field field) | |
{ | |
switch (name) | |
{ | |
case "ru-RU": | |
CultureInfo culture = new CultureInfo(new Locale(name)); | |
DateTimeFormatInfo format = culture.getDateTimeFormat(); | |
format.setMonthNames(new String[] | |
{ | |
"месяц 1", "месяц 2", "месяц 3", "месяц 4", "месяц 5", "месяц 6", "месяц 7", "месяц 8", | |
"месяц 9", "месяц 10", "месяц 11", "месяц 12", "" | |
}); | |
format.setMonthGenitiveNames(format.getMonthNames()); | |
format.setAbbreviatedMonthNames(new String[] | |
{ | |
"мес 1", "мес 2", "мес 3", "мес 4", "мес 5", "мес 6", "мес 7", "мес 8", "мес 9", "мес 10", | |
"мес 11", "мес 12", "" | |
}); | |
format.setAbbreviatedMonthGenitiveNames(format.getAbbreviatedMonthNames()); | |
format.setDayNames(new String[] | |
{ | |
"день недели 7", "день недели 1", "день недели 2", "день недели 3", "день недели 4", | |
"день недели 5", "день недели 6" | |
}); | |
format.setAbbreviatedDayNames(new String[] | |
{ "день 7", "день 1", "день 2", "день 3", "день 4", "день 5", "день 6" }); | |
format.setShortestDayNames(new String[] { "д7", "д1", "д2", "д3", "д4", "д5", "д6" }); | |
format.setAMDesignator("До полудня"); | |
format.setPMDesignator("После полудня"); | |
final String PATTERN = "yyyy MM (MMMM) dd (dddd) hh:mm:ss tt"; | |
format.setLongDatePattern(PATTERN); | |
format.setLongTimePattern(PATTERN); | |
format.setShortDatePattern(PATTERN); | |
format.setShortTimePattern(PATTERN); | |
return culture; | |
case "en-US": | |
return new CultureInfo(new Locale(name)); | |
default: | |
return null; | |
} | |
} | |
} |