통합 문서 이전 스타일 속성을 변경하지 않고 한 셀의 글꼴 색만 변경하는 방법. 첨부 파일 "통합 문서"를 잘 보아주십시오. 열 델타 기여 글꼴 색상은 변경해야하지만 배경 스타일 속성은 변경하면 안됩니다.다른 모든 속성을 동일하게 유지하여 xssf에서 하나의 스타일 속성 만 변경하는 방법
편집 : 코드를 변경했습니다.
템플릿의 열 순위 및 평균 기여도는 Excel 자체에서 설정 한 일부 대체 색상의 미리 정의 된 디자인을가집니다. 템플릿은 내 팀에서 설계했으며 Java에서 변경할 수 없습니다.
제 작품은 조건에 따라 색상이 변하면 제공된 전체 시트와 배경 스타일이 같아야하는 마지막 열 델타 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'은'CellStyle'에 독립적 인 각 색상을위한'Font'를 필요로합니다. 이 폰트는'CellUtil.setFont (cell, redFont)'를 사용하여 설정할 수 있습니다. 당신이하고있는 일은 이미 적용된'CellStyle'을 위해 설정된 폰트를 바꾸는 것입니다. 그러나 보시다시피,이 'CellStyle'을 사용하는 모든 셀의 글꼴이 변경됩니다. –
하지만 루프 안에 여러 번 글꼴을 만들지 마십시오. 통합 문서 수준에서 루프 외부의 각 글꼴을 한 번씩 글꼴을 만들어야합니다. –