Apache POI HSSF
Microsoft Excel 바이너리 파일용 자바 라이브러리
Open Source Java API를 사용하면 Excel XLS 스프레드시트를 읽고, 쓰고, 변환할 수 있습니다.
Apache POI HSSF는 Excel '97(-2007) 파일 형식(BIFF8)의 순수한 Java 구현입니다. 무료 오픈 소스 API는 Excel XLS 스프레드시트를 생성, 읽기, 수정 및 작성하기 위한 기능을 제공합니다. 스프레드시트 데이터 읽기에만 관심이 있는 개발자는 이벤트 모델 API를 사용하여 요구 사항을 충족할 수 있습니다. 스프레드시트 데이터를 수정하기 위해 사용자 모델 API를 사용할 수 있습니다. 사용자 모델 시스템은 저수준 이벤트 사용자 모델보다 메모리 공간이 더 높지만 작업하기가 훨씬 더 쉽다는 주요 이점이 있다는 것을 아는 것이 중요합니다.
Apache POI HSSF는 시트 및 수식 작업, 색상 및 테두리 채우기, 글꼴, 머리글 및 바닥글, 모양, 데이터 유효성 검사, 이미지, 하이퍼링크 등을 통해 셀 스타일 만들기와 같은 추가 Excel 기능에 대한 뛰어난 지원을 제공합니다.
Apache POI HSSF 시작하기
먼저 시스템에 JDK(Java Development Kit)가 설치되어 있어야 합니다. 이미 가지고 있는 경우 Apache POI의 다운로드 페이지로 이동하여 아카이브에서 최신 안정 릴리스를 얻으십시오. 필요한 라이브러리가 Java 프로그램에 링크될 수 있는 디렉토리에서 ZIP 파일의 컨텐츠를 추출하십시오. 그게 다야!
Maven 기반 Java 프로젝트에서 Apache POI를 참조하는 것은 훨씬 더 간단합니다. pom.xml에 다음 종속성을 추가하고 IDE가 Apache POI Jar 파일을 가져와 참조하도록 하기만 하면 됩니다.
Apache POI Maven 종속성
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.0.0</version>
</dependency>
Java API를 통해 Excel 통합 문서 만들기 및 시트 추가
Apache POI HSSF 오픈 소스 라이브러리를 사용하면 소프트웨어 개발자가 XLS 파일 형식으로 새 Microsoft Excel 통합 문서를 만들 수 있습니다. 개발자는 기존 통합 문서 인스턴스에서 컬렉션에 새 워크시트를 쉽게 추가할 수 있습니다.
새 XLS 파일 만들기
// create a new workbook
Workbook workbook = new HSSFWorkbook();
OutputStream outputStream = new FileOutputStream("CreateXls.xls");
// create a new sheet
Sheet sheet = workbook.createSheet("Apache POI XSSF");
// create a new row
Row row = sheet.createRow(1);
// create a new cell
Cell cell = row.createCell(1);
// set cell value
cell.setCellValue("File Format Developer Guide");
// save file
workbook.write(outputStream);
기존 Excel 파일을 읽고 쓰기 위한 Java API
Apache POI HSSF를 사용하면 소프트웨어 개발자가 기존 Microsoft Excel 통합 문서에 액세스하고 데이터를 읽을 수 있습니다. 파일을 읽는 것은 매우 간단합니다. 먼저 Excel 워크시트에서 통합 문서 인스턴스를 만들고 원하는 시트로 이동합니다. 그런 다음 행 번호를 증가시키고 행의 모든 셀에 대해 반복합니다. 모든 데이터를 읽을 때까지 이 단계를 반복합니다. Apache POI HSSF는 기존 Excel 파일을 수정하는 기능도 제공합니다.
Java를 통해 셀 내용 읽기
// open xls file
InputStream inputStream = new FileInputStream("document.xls");
Workbook workbook = WorkbookFactory.create(inputStream);
// get sheet
Sheet sheet = workbook.getSheetAt(0);
// get row
Row row = sheet.getRow(1);
// get cell
Cell cell = row.getCell(1);
// display data
System.out.println(cell);
Excel 스프레드시트에 도형 그리기 및 이미지 추가
Apache POI-HSSF는 Excel 스프레드시트에서 도형을 그리기 위한 기능을 제공합니다. Microsoft Office 그리기 도구를 사용하여 도형 그리기를 지원합니다. 타원, 선, 직사각형 등 다양한 모양을 그리고 다른 모양 스타일을 설정합니다. Apache POI에서 이미지는 도면의 일부이며 현재 PNG, JPG 및 DIB 유형의 이미지를 지원합니다.
Java를 통해 XLS에서 사각형 그리기
// create a new workbook
Workbook workbook = new HSSFWorkbook();
OutputStream outputStream = new FileOutputStream("DrawShape.xls");
// create a new sheet
Sheet sheet = workbook.createSheet("Apache POI XSSF");
// create a new row
Row row = sheet.createRow(1);
// create a new cell
Cell cell = row.createCell(1);
// create rectangle shape
HSSFPatriarch patriarch = (HSSFPatriarch) sheet.createDrawingPatriarch();
HSSFClientAnchor a = new HSSFClientAnchor(0, 0, 1023, 254, (short) 1, 0, (short) 1, 0);
HSSFSimpleShape shape = patriarch.createSimpleShape(a);
shape.setShapeType(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE);
// save file
workbook.write(outputStream);
XLS 스프레드시트의 글꼴 처리 및 병합
Apache POI-HSSF는 Java 프로그래머가 Excel 스프레드시트의 글꼴을 처리할 수 있도록 하는 방법을 제공합니다. 글꼴을 만들고, 색상을 설정하고, 크기를 설정하는 등의 작업을 수행할 수 있습니다. Font는 글꼴을 처리하는 메서드를 제공하는 인터페이스입니다. Apache POI-HSSF를 사용하면 개발자가 셀을 단일 셀로 병합할 수도 있습니다. 이를 위해 셀 인덱스를 인수로 사용하고 셀을 하나의 큰 셀로 병합하는 메서드를 제공합니다.
자바를 통해 XLS 스프레드시트의 글꼴 설정
// create a new XLS file
OutputStream outfile = new FileOutputStream("SetFont.xls");
Workbook wb = new HSSFWorkbook();
// create a new sheet
Sheet sheet = wb.createSheet("Apache POI XSSF");
// create a new row
Row row = sheet.createRow(1);
// create a new cell
Cell cell = row.createCell(1);
// set style
CellStyle style = wb.createCellStyle();
// set text
cell.setCellValue("File Format Developer Guide");
// set font settings
Font font = wb.createFont();
font.setFontHeightInPoints((short) 14);
font.setFontName("Arial");
font.setItalic(true);
font.setBold(true);
// apply font
style.setFont(font);
cell.setCellStyle(style);
// save
wb.write(outfile);