Apache POI-XSSF
Microsoft® Excel XLSX 파일용 오픈 소스 Java API
Java 라이브러리를 통해 Excel XLSX 스프레드시트를 CSV 및 HTML 파일 형식으로 생성, 편집 및 변환합니다.
Apache POI-XSSF란 무엇입니까?
Apache POI-XSSF는 Excel 2007 XLSX 파일 형식의 순수한 Java 구현입니다. API는 Excel XLSX 파일을 생성, 읽기, 수정 및 쓰기 위한 절차를 제공합니다. 특별한 필요가 있는 사람들을 위해 낮은 수준의 구조를 제공합니다. 또한 효율적인 읽기 전용 액세스를 위한 이벤트 모델 API와 XLSX 파일 생성, 읽기 및 수정을 위한 전체 사용자 모델 API를 제공합니다. Apache POI-XSSF는 시트, 수식 작업, 색상 및 테두리 채우기를 통한 셀 스타일 생성, 글꼴, 머리글 및 바닥글, 모양, 데이터 유효성 검사, 이미지, 하이퍼링크 등과 같은 추가 Excel 기능에 대한 뛰어난 지원을 제공합니다.
Apache POI XSSF 시작하기
먼저 시스템에 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-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
Java API를 사용하여 대용량 Excel 스프레드시트 만들기
Apache POI XSSF는 MS Excel 파일에 쓰는 대용량 데이터를 처리하기 위해 SXSSF API를 통해 낮은 메모리 공간을 제공합니다. 이렇게 하면 구성 가능한 행 부분만 한 번에 메모리에 유지되므로 메모리 부족 없이 매우 큰 파일을 쓸 수 있습니다. POI-SXSSF는 슬라이딩 창 내에 있는 행에 대한 액세스를 제한하여 낮은 메모리 공간을 달성하는 반면 XSSF는 문서의 모든 행에 대한 액세스를 제공합니다. 더 이상 창에 없는 이전 행은 디스크에 기록되기 때문에 액세스할 수 없게 됩니다. 다음 단계를 사용하여 Java에서 큰 Excel 파일을 만들 수 있습니다.
Java를 사용하여 대용량 Excel 파일 만들기
- 새 SXSSFWorkbook을 만들고 메모리에 100개의 행을 유지합니다. 초과하는 행은 디스크로 플러시됩니다.
- createSheet() 메서드를 사용하여 새 워크시트 만들기
- createRow(), createCell() 및 setCellValue("Your data") 내부 및 중첩 루프를 사용하여 2000개의 행과 2000개의 셀에 데이터 삽입
- FileOutputStream()을 사용하여 파일을 저장하고 출력 파일 이름을 전달합니다.
- SXSSFWorkbook.Write() 메서드를 사용하여 파일에 쓰고 FileOutputStream을 매개변수로 전달
큰 Excel 파일 만들기
// create a new SXSSFWorkbook
SXSSFWorkbook wb = new SXSSFWorkbook(100);
Sheet sh = wb.createSheet();
// insert 2000 rows
for(int rownum = 0; rownum < 2000; rownum++){
Row row = sh.createRow(rownum);
// insert data in 20000 cells
for(int cellnum = 0; cellnum < 10; cellnum++){
Cell cell = row.createCell(cellnum);
cell.setCellValue("Row Number: "+ rownum + " Cell Number: "+ cellnum);
}
}
// save file
FileOutputStream out = new FileOutputStream("LargeDcument.xlsx");
wb.write(out);
out.close();
Excel 통합 문서 생성 및 시트 추가를 위한 Java API
Apache POI XSSF를 사용하면 컴퓨터 프로그래머가 XLSX 파일 형식으로 새 Excel 통합 문서를 만들 수 있습니다. 개발자가 통합 문서를 생성하면 기존 통합 문서 인스턴스에서 워크시트가 생성되고 새로 생성된 시트가 통합 문서에 순서대로 자동으로 추가됩니다.
Excel 통합 문서 만들기 및 시트 추가
// create a new XLSX file
Workbook workbook = new XSSFWorkbook();
OutputStream outputStream = new FileOutputStream("CreateXlsx.xlsx");
// create a new sheet
Sheet sheet = workbook.createSheet("Apache POI XSSF");
// create a new sheet
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 스프레드시트를 CSV 및 기타 파일 형식으로 변환
Java 개발자와 프로그래머는 Apache POI XSSF API를 사용하여 Excel 스프레드시트를 CSV 파일 형식으로 쉽게 변환할 수 있습니다. CSV는 Comma-Separated-Values의 약자이며 많은 응용 프로그램 간에 데이터를 교환하는 데 사용되는 매우 일반적인 형식입니다. 먼저 개발자는 Apache POI XSSF API를 사용하여 입력 XLS 파일을 읽은 다음 추출된 정보를 CSV 파일에 써야 합니다.
XLSX를 CSV로 변환
// Open and existing XLSX file
FileInputStream fileInStream = new FileInputStream("LargeDocument.xlsx");
XSSFWorkbook workBook = new XSSFWorkbook(fileInStream);
XSSFSheet selSheet = workBook.getSheetAt(0);
// Loop through all the rows
Iterator rowIterator = selSheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
// Loop through all rows and add ","
Iterator cellIterator = row.cellIterator();
StringBuffer stringBuffer = new StringBuffer();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
if (stringBuffer.length() != 0) {
stringBuffer.append(",");
}
stringBuffer.append(cell.getStringCellValue());
}
System.out.println(stringBuffer.toString());
}
workBook.close();
머리글 및 바닥글에 대한 XSSF 향상
Apache POI XSSF에는 첫 페이지 머리글과 바닥글은 물론 짝수/홀수 머리글과 바닥글을 처리하는 기능이 있습니다. 머리글과 바닥글은 Excel 스프레드시트에서 매우 중요한 부분입니다. 일반적으로 날짜, 페이지 번호, 작성자 이름 및 각주와 같은 추가 정보가 포함되어 있어 긴 문서를 정리하고 읽기 쉽게 유지하는 데 도움이 됩니다. 모든 머리글/바닥글 속성 플래그는 XSSF에서 처리할 수 있습니다. 홀수 머리글과 바닥글은 기본 머리글과 바닥글입니다. 첫 페이지 머리글이나 짝수 페이지 머리글을 표시하지 않는 모든 페이지에 표시됩니다.
Excel XLSX 파일 내에서 셀 병합 및 텍스트 추출
Apache POI XSSF는 Java 프로그래머가 Excel 스프레드시트 내에서 여러 셀을 단일 셀로 병합할 수 있는 기능을 제공합니다. 여기에는 셀 인덱스를 인수로 사용하고 셀을 하나의 큰 셀로 병합하는 메서드가 포함되어 있습니다. 가장 까다로운 기능 중 하나는 XLSX 파일에서 텍스트를 추출하여 필요에 따라 사용하는 기능입니다. Apache POI는 모든 프로젝트 지원 파일 형식에 대한 기본 텍스트 추출을 제공했습니다. XML 및 HTML 출력과 함께 서식 있는 텍스트 추출(예: 서식 및 스타일 지정)을 포함한 고급 텍스트 추출 요구 사항의 경우 Apache POI는 Apache Tika와 긴밀하게 협력하여 모든 프로젝트 지원 파일 형식에 대해 POI 기반 Tika 파서를 제공합니다.