Tag: Apache POI

0

[JAVA POI] HSSFWorkbook vs XSSFWorkbook vs SXSSFWorkbook 비교

Apache POI Workbook 종류Apache POI는 Microsoft Office 파일을 처리하기 위한 Java 라이브러리입니다. Excel 파일을 다루기 위해 세 가지 주요 Workbook 구현체를 제공합니다. 📌 HSSFWorkbookHSSF (Horrible SpreadSheet Format) 는 Excel 97-2003 파일 형식(.xls)을 처리하는 구현체입니다. 특징 파일 형식: .xls (Excel 97-2003) 최대 행 수: 65,536행 (2^16) 최대 열 수: 256열 (2^8) 최대 Cell Style: 4,000개 메모리 사용: 중간 수준 (전체 파일을 메모리에 로드) 처리 속도: XSSF보다 빠름 사용 예시import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.*;import java.io.FileOutputStream;import java.io.IOException;public class HSSFExample { public static void main(String[] args) throws IOException { // HSSFWorkbook 생성 Workbook workbook = new HSSFWorkbook(); Sheet sheet = workbook.createSheet("Sample"); // 데이터 작성 Row row = sheet.createRow(0); Cell cell = row.createCell(0); cell.setCellValue("Hello, HSSF!"); // .xls 파일로 저장 try (FileOutputStream fileOut = new FileOutputStream("sample.xls")) { workbook.write(fileOut); } workbook.close(); }} 장점

0

[JAVA POI] - The maximum number of Cell Styles was exceeded.

문제 상황Apache POI를 사용하여 Excel 파일(.xlsx)을 생성하거나 수정할 때 다음과 같은 오류가 발생할 수 있습니다. java.lang.IllegalStateException: The maximum number of Cell Styles was exceeded.You can define up to 64000 style in a .xlsx Workbook 발생 원인1. Cell Style 생성 방식의 문제Excel의 .xlsx 파일 형식에서는 최대 64,000개의 Cell Style만 생성할 수 있습니다. 이 제한은 Excel 파일 포맷의 스펙에 정의된 하드 리미트입니다. 일반적으로 이 오류는 다음과 같은 상황에서 발생합니다: // 잘못된 예시 - 반복문 안에서 매번 새로운 스타일 생성for (int i = 0; i < rows.size(); i++) { Row row = sheet.createRow(i); Cell cell = row.createCell(0); // 매 셀마다 새로운 스타일을 생성 (문제!) CellStyle style = workbook.createCellStyle(); Font font = workbook.createFont(); font.setBold(true); style.setFont(font); cell.setCellStyle(style); cell.setCellValue(data.get(i));} 위 코드에서 10,000개의 행을 처리한다면, 10,000개의 동일한 스타일이 생성되어 메모리를 낭비하고 결국 64,000개 제한에 도달하게 됩니다.