Каков эффект применения setCellStyle к org.apache.poi.ss.usermodel.Cell несколько раз? - PullRequest
1 голос
/ 21 декабря 2011

Документация, которую я нашел, не решает эту проблему. Я думаю, что вызов cell.setCellStyle (a) и cell.setCellStyle (b) полностью перезапишет стиль a и применит стиль b. Однако, похоже, что он применяет оба, потому что стили не конфликтуют. Это ожидаемое поведение или магия?

1 Ответ

1 голос
/ 21 декабря 2011

Хорошо, вот исходный код для setCellStyle():

 public void setCellStyle(CellStyle style) {
     if(style == null) {
         if(_cell.isSetS()) _cell.unsetS();
     } else {
         XSSFCellStyle xStyle = (XSSFCellStyle)style;
         xStyle.verifyBelongsToStylesSource(_stylesSource);

         long idx = _stylesSource.putStyle(xStyle);
         _cell.setS(idx);
     }
 }

_cell имеет тип org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell, и я не смог найти исходный код в Интернете.Однако, поскольку вызов _cell.setS(idx) передается только по индексу, API не выглядит достаточно богатым, чтобы поддерживать объединение стилей.Я сильно подозреваю, что у вашего второго стиля есть все атрибуты, которые вы видите.

...