Alanlara Özel Biçimlendirme Uygula

Bazen kullanıcılar alanları özel biçimlendirmeye uygulamak isterler. Bu makalede, bunun nasıl yapılabileceğine dair birkaç örnek inceleyeceğiz.

Daha fazla seçenek öğrenmek için her alan türü için tam özelliklerin listesini ilgili sınıfta görebilirsiniz.

Alan Sonuçlarına Özel Biçimlendirme Nasıl Uygulanır

Aspose.Words özel biçimdeleme için API sağlar. Alan sonucunun nasıl biçimlendirileceğini kontrol etmek için IFieldResultFormatter arayüzünü uygulayabilirsiniz. Sayısal biçim anahtarını, örneğin # “#.##”, tarih/saat biçim anahtarını, örneğin @ “dd.MM.yyyy” ve sayı biçim anahtarını, örneğin * Ordinal* kullanabilirsiniz.

Aşağıdaki kod örneği, alan sonucuna özel biçimlendirme uygulamak için nasıl yapılacağını göstermektedir.

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

Nasıl IF koşulunu değerlendirirsin?

Eğer bir IF koşulunu Mail Merge sonrası değerlendirmek istiyorsan, ifadeyi değerlendirmenin sonucunu hemen döndüren EvaluateCondition metodunu kullanabilirsin.

Aşağıdaki kod örneği bu yöntemin nasıl kullanılacağını göstermektedir:

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

Zaman Alanına Özel Biçim Uygulama Nasıl Yapılır?

Varsayılan olarak Aspose.Words TIME alanını geçerli kültür kısa zaman formatı ile günceller. Eğer siz TIME alanını gereksinimlerinize göre formatlamak istiyorsanız bunu gerçekleştirmek için IFieldUpdateCultureProvider arayüzünü uygulayabilirsiniz.

Aşağıdaki kod örnekleri, TIME alanına özel biçimlendirme uygulamak için nasıl yapılacağını gösterir:

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