Как изменить только цвет шрифта одной ячейки без изменения прежних свойств стиля книг. Пожалуйста, ознакомьтесь с приложением «Рабочая тетрадь» для четкого понимания. Цвет шрифта вкладки дельта-столбца следует изменить, но его свойства стиля фона не должны быть изменены.Как изменить только одно свойство стиля в xssf, сохраняя при этом все остальные свойства
EDIT: Я изменил код.
Ранжирование столбцов и средний вклад в шаблон имеют предопределенный дизайн некоторых альтернативных цветов, которые установлены в самом excel. Шаблон разработан моей командой, и я боюсь, что не могу изменить его с Java.
Моя работа - заполнить последний столбец Delta Contribution, фоновые стили которого должны быть такими же, как и общий лист, при условии изменения цвета в соответствии с условиями.
String deltaContribution = line.getDeltaContribution() != null
? Double.parseDouble(line.getDeltaContribution()) + "" : "";
if (!deltaContribution.equals("")) {
XSSFCell cell = (XSSFCell) row.getCell(8);
XSSFCellStyle style = cell.getCellStyle();
XSSFFont redFont = style.getFont();
XSSFFont blueFont = style.getFont();
XSSFFont greenFont = style.getFont();
if(Double.parseDouble(deltaContribution) >= 0.20) {
redFont.setColor(IndexedColors.RED.getIndex());
CellUtil.setFont(cell, workbook, redFont);
//log.info("The colour is " + colour.getARGBHex());
}
else if(Double.parseDouble(deltaContribution) <= -0.20) {
greenFont.setColor(IndexedColors.GREEN.getIndex());
CellUtil.setFont(cell, workbook, greenFont);
//log.info("The colour is " + colour.getARGBHex());
}
else {
blueFont.setColor(IndexedColors.BLUE.getIndex());
CellUtil.setFont(cell, workbook, blueFont);
//log.info("The colour is " + colour.getARGBHex());
}
row.getCell(8).setCellValue(line.getDeltaContribution() != null
? formatDecimalPlaces(line.getDeltaContribution()) : "");
}
Не следует менять предыдущие стили, применяемые к листу, я должен просто изменить одно свойство стиля. После изменения кода весь столбец заполняется зеленым цветом. Last column
Учебное пособие:
Все ваши номера, кажется, являются текстовыми строками вместо действительно числовых значений. Это действительно необходимо? Этого следует избегать, поскольку Excel не может использовать такие текстовые строки в вычислении формулы. –
Как и в моем примере кода, вашей книге «Workbook» требуется «Font» для каждого цвета, который не зависит от «CellStyle». Этот шрифт вы можете установить, например, используя 'CellUtil.setFont (cell, redFont)'. То, что вы делаете, это изменение шрифта, установленного для уже примененного «CellStyle». Но, как вы видите, это приводит к изменению шрифта во всех ячейках, которые используют этот «CellStyle». –
Но не создавайте шрифты несколько раз внутри цикла. Создавайте шрифты один раз за каждый шрифт за пределами цикла на уровне рабочей книги. –