2010-05-10 6 views
38

POI를 사용하여 Java 스프레드 시트를 만듭니다. 나는 헤더 행을 만드는 데 사용되는 다음과 같은 코드가 있습니다 :HSSFCellStyle의 전경색 설정은 항상 검은 색으로 표시됩니다.

HSSFWorkbook wb = new HSSFWorkbook(); 
HSSFSheet sheet = wb.createSheet("Report"); 

// some more code 

HSSFRow row = sheet.createRow(0); 

HSSFCell cell = row.createCell(cellNumber); 
HSSFCellStyle cellStyle = wb.createCellStyle(); 

cellStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index); 
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 

HSSFFont font = wb.createFont(); 
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); 
font.setColor(HSSFColor.WHITE.index); 

cellStyle.setFont(font); 
cell.setCellStyle(cellStyle); 

오전 데 문제는 셀 채우기 배경 색상을 설정하면 관계없이 항상 내가 선택 무슨 색깔, 검은 나오는 없다는 것입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? "setFillPattern"줄을 사용하지 않으면 색상이 전혀 표시되지 않습니다.

답변

64

나는 이것을 작동 시켰습니다. 전경색을 설정하여 배경색을 적용해야했습니다 (??).

cellStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index); 

에 :

그래서 나는 변경

cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); 

하고 일했다!

+5

아, 알겠습니다. 배경 색상을 변경하려면 전경 색상을 변경해야합니다 - 천재! – Pakman

+2

많은 시간을 절망적으로 구했는데, 누군가이 방법으로 왜 이런 식으로 작동하는지 알고 있습니까? – CGK

+4

전 셀이 전경과 배경 픽셀로 구성된 패턴으로 그려져 있다고 생각합니다. SOLID_FOREGROUND를 사용하면 전경 픽셀 만 보입니다. 이 색은 글꼴을 사용하여 설정 한 텍스트를 렌더링하는 데 사용되는 색과 다릅니다. – Axel

5

당신이 전경 색을 설정하는 경우 배경색을 설정하는 경우, 전경색과 배경색이 보인다

style.setFillPattern(FillPatternType.THICK_BACKWARD_DIAG); 

또는

style.setFillPattern(FillPatternType.THIN_BACKWARD_DIAG); 

사용

cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); 

를 사용 배경 채우기 patt 전에 전경 채우기 패턴을 설정하면 '스택'(빨간색 + 파란색 = 자주색) 어쨌든, 다른 방법은 없습니다. 선택할 수있는 몇 가지 다른 채우기 패턴이 있습니다. 기본 채우기 패턴을 변경하지 않으면 색상이 적용되지 않습니다.

CellStyle.SOLID_FOREGROUND은 버전 3.15 이상에서 사용되지 않습니다. 대신 FillPatternType.SOLID_FOREGROUND을 사용하십시오.

+0

'style.setFillForegroundColor (IndexedColors.GREY_25_PERCENT.getIndex());에 대한 좋은 설명입니다. \t \t \t style.setFillPattern (FillPatternType.SOLID_FOREGROUND);'도움이 되셨습니다. 감사합니다 +1) : - – Yash

관련 문제