Обычно реализация основана на прямом получении списка полей Field с помощью отражения Java. Как правило, этот порядок фиксирован.
Однако иногда, например, для выравнивания памяти, JVM может изменить порядок информации о полях Field, что приводит к неопределённости порядка.
Вероятность этого события очень мала, но всё же оно может произойти.
Возможно, вы работаете над сложным продуктом, или у вас строгий клиент, или вы стремитесь к совершенству в технологиях, но эту проблему необходимо решить.
/**
* Указание порядкового номера
* Объяснение: по умолчанию обработка выполняется непосредственно через отражение Field, но в некоторых случаях порядок отражённых полей может быть нарушен.
* Например, при выравнивании памяти вероятность этого события хоть и мала, но можно обработать его, указав свойство order.
* (1) Чем меньше значение order, тем раньше создаётся столбец excel.
* (2) Поля без аннотаций имеют значение по умолчанию order=0
* @return Порядковый номер
* @since 0.0.5
*/
int order() default 0;
Мы выбрали простой способ — через указание свойства order
для @ExcelField
.
Свойство order
определяет порядок результатов генерации excel.
Чтобы сохранить совместимость, по умолчанию используется значение order=0
, а если аннотация не указана, то order=0
.
См. тестовый класс ExcelBsOrderTest
.
public class UserFieldOrdered {
@ExcelField(headName = "姓名", order = 1)
private String name;
@ExcelField(headName = "年龄", order = 2)
private int age;
@ExcelField(headName = "地址", order = 0)
private String address;
//Getter/Setter/toString()
}
final String filePath = PathUtil.getAppTestResourcesPath()+"/userOrdered.xls";
List<UserFieldOrdered> models = buildUserList();
ExcelBs.newInstance(filePath).write(models);
Адрес | Имя | Возраст |
---|---|---|
china | one | 10 |
Неизвестно, как будет выглядеть результат при использовании ASM байт-кода для прямого изменения результата, но мы планируем провести соответствующую оптимизацию позже.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )