SXSSFWorkbook 워크북 생성
워크북 객체를 생성해주고 워크북 내에 시트를 생성한다.
열 폭 세팅을 위해 시트의 setColumWidth(해당, 열, 폭) 메서드를 이용한다.
SXSSFWorkbook workbook = new SXSSFWorkbook();
// 시트 생성
SXSSFSheet sheet = workbook.createSheet("과일표");
// 열 폭 수정
sheet.setColumnWidth(3, 6000);
sheet.setColumnWidth(4, 7000);
sheet.setColumnWidth(5, 8000);
sheet.setColumnWidth(6, 6000);
CellStyle 정렬 Alignment
CellStyle 객체를 생성하여 Alignment 세팅하는 함수를 호출해서 인자값을 넣어준다.
POI라이브러리를 사용해서 스타일 및 폰트 그리고 기타 다른 설정 값을 세팅할 때 POI라이브러리 내에 Enum을 사용한다.
Horizontal Alignment와 VerticalAlignment 를 모두 가운데 정렬 시켰다.
CellStyle mergeRowStyle1 = workbook.createCellStyle();
mergeRowStyle1.setAlignment(HorizontalAlignment.CENTER);
mergeRowStyle1.setVerticalAlignment(VerticalAlignment.CENTER);
CellStyle 테두리 Border
테두리는 각 셀마다 상하좌우 모두 설정해준다.
setBorderTop, Bottom, Left, Right 메소드와 인자로 POI라이브러리의 BorderStyle 인자를 넣어서 적용한다.
CellStyle mergeRowStyle1 = workbook.createCellStyle();
mergeRowStyle1.setBorderTop(BorderStyle.THICK);
mergeRowStyle1.setBorderLeft(BorderStyle.MEDIUM_DASH_DOT_DOT);
CellStyle 배경색 ForegroundColor
배경색을 입히는 데 두 가지 방법이 있다.
1. POI라이브러리에 내제되어 있는 Enum을 사용해서 주어진 대표 색을 입히는 것
2. XSSFColor 객체를 생성해서 rgb 컬러를 사용하는 것
ForegroundColor 주어진 대표색
setFillForegroundColor 메서드에 IndexedColors Enum인자를 사용한다.
setFillPattern은 해당 색을 어떤 패턴으로 입힐지를 정한다.
CellStyle mergeRowStyle1 = workbook.createCellStyle();
mergeRowStyle1.setFillForegroundColor(IndexedColors.AQUA.getIndex());
mergeRowStyle1.setFillPattern(FillPatternType.BRICKS);
ForegroundColor rgb 컬러
rgb컬러를 사용하기 위해서는 기존 CellStyle이 아닌 XSSFCellStyle을 사용해준다.setFillForegroundColor 메서드를 사용하는데 인자로 XSSFColor 객체를 생성해서 만들어준다.XSSFColor 객체에는 바이트 배열 형태로 rgb 수치를 넣어준다.
XSSFCellStyle mergeRowStyle2 = (XSSFCellStyle) workbook.createCellStyle();
mergeRowStyle2.setFillForegroundColor(new XSSFColor(new byte[] {(byte) 192,(byte) 192,(byte) 192}, null));
mergeRowStyle2.setFillPattern(FillPatternType.FINE_DOTS);
Cell Font 설정
폰트 적용을 위해 POI 라이브러리의 Font 객체를 생성해준다.해당 객체의 세터를 사용해 폰트를 설정해 준다. 대표적으로 글씨체, 크기, 색상, 굵기만 설정했다.
이후 CellStyle의 setFont 메소드를 사용해 인자로 폰트를 넣어준다.
Font headerFont = workbook.createFont();
headerFont.setFontName("나눔고딕");
headerFont.setFontHeight((short)1000);
headerFont.setColor(IndexedColors.GREEN.getIndex());
headerFont.setBold(true);
CellStyle headerStyle = workbook.createCellStyle();
headerStyle.setFont(headerFont);
Cell Merge 셀 병합
셀 병합은 시트의 addMergeRegion 메서드에 CellRangeAddress 객체를 인자로 하여 병합시킨다.
CellRangeAddress 생성자의 인자로(시작 행, 끝 행, 시작 열, 끝 열) 순서대로 넣어서 병합시실 범위를 정한다. 시작은 0부터다.
// 행 추적을 위한 변
int rowLocation = 0;
Row row = null;
Cell cell = null;
// 병합 행
row = sheet.createRow(++rowLocation);
// 과일장표 병합 작업
for(int i=1; i<3; i++) {
cell = row.createCell(i);
cell.setCellStyle(mergeRowStyle1);
cell.setCellValue("과일장표");
}
sheet.addMergedRegion(new CellRangeAddress(1, (list.size() + 1 + 1), 1, 2)); // 행시작, 행끝, 열시작, 열끝
// 과일 목록 병합 작업
for(int i=3; i<7; i++) {
cell = row.createCell(i);
cell.setCellStyle(mergeRowStyle2);
cell.setCellValue("과일 목록");
}
sheet.addMergedRegion(new CellRangeAddress(1, 1, 3, 6));
'JAVA' 카테고리의 다른 글
[JAVA] File Object (0) | 2023.05.19 |
---|---|
[JAVA] Excel - Apache POI(SXSSFWorkbook Example) (0) | 2023.05.19 |
JAVA - 정규표현식(regex) (0) | 2022.11.25 |
JAVA - 입력(Scanner, InputStream, BufferedReader) (1) | 2022.11.25 |
JAVA - 4-12_임의의 정수 만들기 (0) | 2022.11.14 |