본문 바로가기

STUDY/Java

Java | Excel 파일 생성하기

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);

하이퍼링크 다양한 타켓