apache poi 라이브러리를 사용하면 엑셀파일을 읽고, 쓰기가 가능하다.
라이브러리 다운로드 및 추가
아래 라이브러리들이 모두 필요함..^-^ mvnrepository.com/
인텔리제이 외부 라이브러리 추가 방법
커맨드(⌘) + ; 혹은 File - Project Structure...
엑셀 시트 작성하기
작성법은 매우 간단하다.. Workbook - Sheet - Row - Cell 순서로 생성, 추가 해주면 된다.
workbook
이 하나의 엑셀 파일로 생성된다.
Workbook workbook = new XSSFWorkbook();
sheet
생성
Sheet sheet = workbook.createSheet("sheet name");
row
추가 (0부터 시작한다.)
Row titleRow = sheet.createRow(0);
cell
추가 setCellValue(..)
메서드로 해당 셀에 값을 입력
Cell titleCell = titleRow.createCell(0);
titleCell.setCellValue("cell value");
스타일 지정하기
우선 style과 font를 선언 및 설정해준다.
CellStyle style = workbook.createCellStyle();
style.setVerticalAlignment(VerticalAlignment.CENTER); // 세로 중앙 정렬
style.setAlignment(HorizontalAlignment.CENTER); // 가로 중앙 정렬
XSSFFont font = ((XSSFWorkbook) workbook).createFont();
font.setBold(true); // bold체 설정
font.setFontHeight((short) (20*20)); // 20pt로 설정
style.setFont(font); // style에 font지정
그리고 setCellStyle(..)
메서드를 이용해 각각의 cell마다 스타일을 설정한다.
titleCell.setCellStyle(style);
파일로 내보내기
File currDir = new File("."); // 현재 프로젝트 경로를 가져옴
String path = currDir.getAbsolutePath();
String fileLocation = path.substring(0, path.length() - 1) + "temp.xlsx"; // 파일명 설정
Workbook workbook = createWorkBook(tables); // workbook을 반환하는 메서드(직접작성한 메서드로 무시해도 됨..)
FileOutputStream fileOutputStream = new FileOutputStream(fileLocation); // 파일 생성
workbook.write(fileOutputStream); // 엑셀파일로 작성
workbook.close();
컬럼마다 자동 넓이 설정하기!
이 메서드로 처리해주지 않으면 모두 직접 설정하거나 기본 값으로 생성해야 함..
private void autoSizeColumns(Sheet sheet) {
int rowCount = sheet.getPhysicalNumberOfRows();
for (int i = 0; i < rowCount; i++) {
Row row = sheet.getRow(i);
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
int columnIndex = cell.getColumnIndex();
sheet.autoSizeColumn(columnIndex);
}
}
}
하이퍼 링크 추가하기
하이퍼링크 스타일, 폰트 정의
CellStyle hyperLinkStyle = workbook.createCellStyle();
Font hyperLinkFont = workbook.createFont();
hyperLinkFont.setUnderline(Font.U_SINGLE);
hyperLinkFont.setColor(IndexedColors.BLUE.getIndex());
hyperLinkStyle.setFont(hyperLinkFont);
CreationHelper
선언
CreationHelper creationHelper = workbook.getCreationHelper();
creationHelper
를 이용해 Hyperlink
를 생성한 후 타겟 설정
Cell nameCell = row.createCell(1);
Hyperlink hyperlink = creationHelper.createHyperlink(HyperlinkType.DOCUMENT);
hyperlink.setAddress("'타켓시트명'" + "!A1");
nameCell.setCellValue(table.getTable_name());
nameCell.setHyperlink(hyperlink);
nameCell.setCellStyle(hyperLinkStyle);
'STUDY > Java' 카테고리의 다른 글
Java | SHA-256 (0) | 2021.04.30 |
---|---|
Java | AES-256 암/복호화 (0) | 2021.04.29 |
Java | 정규식으로 특정 문자 사이 값 추출하기 (0) | 2021.04.09 |
Java | Builder패턴 (Lombok @Builder) (0) | 2021.03.29 |
Java | MultipartFile image width와 height 알아내기 (0) | 2021.03.25 |