החל פורמט מותאם אישית לשדות

לפעמים משתמשים צריכים ליישם פורמט מותאם אישית לתחומים. במאמר זה נבחן כמה דוגמאות כיצד ניתן לעשות זאת.

כדי ללמוד אפשרויות נוספות, ראה את הרשימה המלאה של נכסים עבור כל סוג שדה בכיתה המקבילה.

כיצד ליישם פורמט מותאם אישית לשדות

Aspose.Words מספק API לפורמט מותאם אישית של התוצאה של השדה. אתה יכול ליישם IFieldResultFormatter ממשק כדי לשלוט כיצד התוצאה של השדה מעוצבת. אתה יכול ליישם מתג פורמט המספרי, כלומר /###, תאריך / זמן פורמט מתג, i.e.@ “d.MMyyyy”, והחלפת תבנית מספר, כלומר * 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;
}
}
}