Я использую одну книгу HSSF в качестве шаблона для другой. Из-за того, как это работает, как вы, вероятно, знаете, если читаете это, я не могу просто взять ячейку из книги 1 и установить ее стиль на CellStyle из книги 2. Способ, которым это должно быть сделано, состоит в том, чтобы cloneStyleFrom второго стиль.
Однако на рабочем листе может быть не более 4000 стилей, поэтому я стараюсь избегать клонирования неограниченного количества стилей. Итак, я проверяю, соответствует ли стиль, который я собираюсь клонировать, любому стилю, который уже существует в моей книге. Если это так, я просто использую стиль, который уже существует. Если это не так, я клонирую стиль из рабочей книги шаблона.
Я использую метод equals, определенный ниже, который, кажется, не заботится о том, из какой книги получен стиль.
http://www.java2s.com/Open-Source/Java-Document/Collaboration/poi-3.6/org/apache/poi/hssf/usermodel/HSSFCellStyle.java.htm#equalsObject
Однако, когда в конце всего этого я проверяю:
if ( !getCellStyle().equals(cell.getCellStyle()) ) {
System.out.println("Not equal to cloned style!");
} else {
System.out.println("Equal to cloned style.");
}
... вывод указывает, что стили не равны.
Почему это?
Примечание. Проверено, что оба объекта имеют тип HSSFCellStyle, используя instanceof.