ใช้การจัดรูปแบบที่กำหนดเองไปยังฟิลด์

บางครั้งผู้ใช้ต้องใช้การจัดรูปแบบที่กำหนดเองกับฟิลด์ ในบทความนี้เราจะดูที่คู่ของตัวอย่างของวิธีการนี้สามารถทำได้.

เมื่อต้องการเรียนรู้ตัวเลือกเพิ่มเติม,ดูรายการของคุณสมบัติทั้งหมดสำหรับแต่ละฟิลด์ชนิด.

วิธีการใช้การจัดรูปแบบที่กำหนดเองเพื่อผลลัพธ์ฟิลด์

Aspose.Wordsให้APIสำหรับการจัดรูปแบบที่กำหนดเองของผลลัพธ์ของฟิลด์ คุณสามารถใช้อินเตอร์เฟซIFieldResultFormatterเพื่อควบคุมวิธีการจัดรูปแบบผลลัพธ์ของฟิลด์ คุณสามารถใช้สวิตช์รูปแบบตัวเลขได้เช่น# “#.##",สวิตช์รูปแบบวันที่/เวลา,กล่าวคือ@ “dd.MM.yyyy"และสวิตช์รูปแบบตัวเลข,กล่าวคือ* Ordinal.

ตัวอย่างรหัสต่อไปนี้แสดงวิธีการใช้การจัดรูปแบบที่กำหนดเองสำหรับผลลัพธ์ฟิลด์.

// 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);
}

วิธีการประเมินเงื่อนไขIF

ถ้าคุณต้องการประเมินIFเงื่อนไขหลังจากmail mergeคุณสามารถใช้วิธีการEvaluateConditionที่ส่งกลับผลลัพธ์ของการประ.

ตัวอย่างรหัสต่อไปนี้แสดงวิธีการใช้วิธีการนี้:

// 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);

วิธีการใช้การจัดรูปแบบที่กำหนดเองไปยังเขตเวลา

โดยค่าเริ่มต้นAspose.WordsอัพเดตTIMEฟิลด์ที่มีรูปแบบเวลาสั้นๆวัฒนธรรมปัจจุบัน หากคุณต้องการจัดรูปแบบฟิลด์TIMEตามความต้องการของคุณ,คุณสามารถบรรลุนี้โดยการใช้อินเตอร์เฟซIFieldUpdateCultureProvider.

ตัวอย่างรหัสต่อไปนี้แสดงวิธีใช้การจัดรูปแบบแบบกำหนดเองกับฟิลด์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;
}
}
}