개발 & 데이터베이스/JAVA

[JAVA] apache poi로 엑셀 생성하기 #2 셀 병합하기

K.두부 2021. 12. 14. 00:03
반응형

저번 포스팅에서 apache poi로 엑셀을 생성하고 가장 기본적인 표를 생성해봤습니다. 이번 포스팅엔 좀 더 응용해서 셀 병합 기능을 사용해보려고 합니다. 저번에 사용한 코드에서 몇 가지만 추가해주면 간단하게 사용할 수 있습니다. 

 

 

[JAVA] apache poi로 엑셀 생성하는 방법 #1 표 만들기

Java에서는 apache poi 라이브러리를 이용하면 엑셀, 워드, 파워포인트 등 다양한 문서를 제어하고 생성할 수 있습니다. 우선 apache poi 라이브러를 사용하기 위해서는 해당 프로젝트에 추가를 해주셔

sookr5416.tistory.com

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.util.CellRangeAddress;
public class Main {
public static void main(String[] args) throws IOException {
HSSFWorkbook workBook = new HSSFWorkbook();
CellStyle defaultStyle = workBook.createCellStyle();
// 테두리 설정
defaultStyle.setBorderTop(BorderStyle.THIN);
defaultStyle.setBorderLeft(BorderStyle.THIN);
defaultStyle.setBorderRight(BorderStyle.THIN);
defaultStyle.setBorderBottom(BorderStyle.THIN);
// 줄 바꿈 및 중앙 정렬
defaultStyle.setWrapText(true);
defaultStyle.setAlignment(HorizontalAlignment.CENTER);
defaultStyle.setVerticalAlignment(VerticalAlignment.CENTER);
// 시트 생성 및 셀 높이 설정
HSSFSheet sheet = workBook.createSheet();
sheet.setDefaultRowHeightInPoints(30);
for (int i=0; i<10; i++) {
Row row = sheet.createRow(i);
for (int j=0; j<5; j++) {
Cell cell = row.createCell(j);
cell.setCellStyle(defaultStyle);
cell.setCellValue("셀 생성 (" + i + ", " + j + ")");
sheet.setColumnWidth(j, 3000);
}
}
// 9번째 행의 1번째~4번째 열을 합친다. (추가된 부분)
sheet.addMergedRegion(new CellRangeAddress( 9, 9, 0, 4 ));
HSSFRow Row = sheet.getRow(9);
HSSFCell cell = Row.getCell(0);
cell.setCellValue("셀 병합한 라인입니다.");
defaultStyle.setWrapText(true);
cell.setCellStyle(defaultStyle);
try {
File xlsFile = new File("C:/EXCEL_TEMP/test.xls");
FileOutputStream fileOut = new FileOutputStream(xlsFile);
workBook.write(fileOut);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
workBook.close();
}
}
}

반응형