Java에서 Excel 파일 읽기

Haider Ali 2023년10월12일
  1. Java에서 Excel 파일 읽기
  2. APACHE POI 라이브러리 개요
Java에서 Excel 파일 읽기

이 글은 자바 프로그램에서 엑셀 파일을 읽기 위해 필요한 정보를 교육한다. 어떤 소프트웨어를 사용할 것인가? 따라야 할 단계와 마지막으로 중요한 것은 사용자가 Excel 파일을 읽을 수 있도록 라이브러리를 적용하는 방법입니다. 그럼 시작하겠습니다.

Java에서 Excel 파일 읽기

Java에서 Excel 파일을 읽는 것은 Microsoft Word와 같은 다른 파일 형식처럼 쉽지 않습니다. 그러나 Excel 시트에는 셀이 포함되어 있으므로 그 이유를 쉽게 이해할 수 있습니다.

JDK(Java Development Kit)는 사용자가 Microsoft Excel 및 Microsoft Word와 같은 파일을 처리하도록 허용하지 않습니다. 또한 사용자에게 필요한 API를 제공하지 않으므로 작업을 수행하기 위해 타사 라이브러리에 의존할 수밖에 없습니다.

Java에서 엑셀 파일을 읽으려면 .xls.xlsx 형식 모두에서 작동할 수 있는 APACHE POI 라이브러리에 대해 배워야 합니다.

APACHE POI 라이브러리 개요

Poor Obfuscation Implementation으로도 알려진 APACHE POI 라이브러리는 사용자에게 두 가지 구현을 제공합니다. 하나는 HSSF이고 다른 하나는 XSSF입니다.

  1. HSSF - HSSF, 끔찍한 스프레드 시트 형식, 구현은 이전 버전의 Microsoft Excel, 특히 Excel 2003 및 이전 버전에서 작동하는 API를 사용하는 사용자를 나타냅니다.
  2. XSSF - XSSF, XML 스프레드 시트 형식, 구현은 이후 버전의 Microsoft Excel에서 작동하는 API를 사용하는 사용자를 나타냅니다. 이 경우 Excel 2007+ 버전용입니다. 이 구현을 사용하여 .xlsx 형식으로 작업할 수도 있습니다.

작업을 더 자세히 이해하기 위해 인터페이스와 클래스를 살펴보겠습니다.

인터페이스와 클래스

아래에 언급된 모든 인터페이스는 HSSFXSSF 모두에서 작동합니다.

  1. workbook - workbook은 Excel Workbook을 나타내는 인터페이스입니다. 여기에는 HSSFWorkbookXSSFWorkbook의 두 클래스가 있습니다.

  2. 시트 - 아시다시피 통합 문서의 중심 구조는 워크시트로 알려져 있습니다. 따라서 시트는 Excel 워크시트를 나타내는 인터페이스입니다.

    라이브러리 java.lang.Iterable의 확장입니다. 이 인터페이스의 두 클래스는 HSSFSheetXSSFSheet입니다.

  3. - Excel 시트의 을 나타내는 인터페이스입니다. 이 인터페이스는 java.lang.Iterable 라이브러리의 확장이기도 합니다. HSSFRowXSSFRow의 두 클래스가 있습니다.

  4. cell - Excel 시트의 에 있는 셀을 나타내는 인터페이스입니다. 또한 HSSFCellXSSFCell이라는 두 개의 클래스가 있습니다.

이제 APACHE POI 라이브러리에 포함된 내용과 사용할 수 있는 인터페이스 및 클래스를 알았으므로 Excel 파일을 읽는 단계를 살펴보겠습니다.

Java에서 Excel 파일을 읽는 단계

이 단계는 따라하기 쉽습니다.

  • lib 폴더 생성

    사용자가 Excel 파일을 열고 읽는 데 사용할 Java 프로젝트에 lib라는 폴더를 만듭니다.

  • jar 파일 다운로드

    이 단계에서는 사용자가 이전 단계에서 만든 lib 폴더에 일부 jar 파일을 다운로드해야 합니다. commons-collections4-4.1.jar, poi-3.17.jar, poi-ooxml-3.17.jar, poi-ooxml-schemas-3.17.jar를 다운로드해야 합니다. xmlbeans-2.6.0.jar

  • jar 파일을 추가할 경로 생성

    이 단계에서는 이전 단계에서 다운로드한 jar 파일을 추가하기 위해 경로를 생성해야 합니다. 이를 위해 1단계에서 생성한 Java 프로젝트를 마우스 오른쪽 버튼으로 클릭합니다.

    그런 다음 build path 옵션을 클릭하여 jar 파일에 대한 path를 빌드합니다. 마지막으로 외부 ‘jar’ 파일을 추가한 후 적용 후 닫기를 클릭합니다.

  • 자바 클래스 만들기

    이 단계에서 Java 클래스 파일을 만든 다음 원하는 Excel 파일을 호출하여 데이터를 읽을 수 있습니다. 다음은 Excel 파일을 읽는 클래스 파일의 예입니다.

    이 예에서는 Excel 2007+ 버전을 사용하므로 XSSF가 사용됩니다.

    import java.io.File;
    import java.io.FileInputStream;
    import java.util.Iterator;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    public class Example {
      public static void main(String[] args) {
        try {
          File ExcelFile = new File("D:\\your_filename.xlsx");
          // obtaining bytes from the file
          FileInputStream FileStream = new FileInputStream(ExcelFile);
          // using the Workbook interface
          XSSFWorkbook ExcelWorkbook = new XSSFWorkbook(FileStream);
    
          // using the sheet class to get the object
          XSSFSheet ExcelSheet = ExcelWorkbook.getSheetAt(0);
          // iterating over excel file, rows.
          Iterator<Row> IterateRows = ExcelSheet.iterator();
          while (IterateRows.hasNext()) {
            Row ExcelRow = IterateRows.next();
    
            // iterating over the column
            Iterator<Cell> IterateCells = ExcelRow.cellIterator();
    
            while (IterateCells.hasNext()) {
              Cell ExcelCell = IterateCells.next();
    
              switch (ExcelCell.getCellType()) {
                case Cell.CELL_TYPE_STRING: // represents string cell type
                  System.out.print(ExcelCell.getStringCellValue() + "\t");
                  break;
                case Cell.CELL_TYPE_NUMERIC: // represents number cell type
                  System.out.print(ExcelCell.getNumericCellValue() + "\t");
                  break;
                default:
              }
            }
            System.out.println("");
          }
        } catch (Exception exp) {
          exp.printStackTrace();
        }
      }
    }
    

이 예제 코드를 사용하면 APACHE POI 라이브러리를 사용하는 방법을 쉽게 이해할 수 있습니다. 이 예제 코드의 출력은 사용자가 제공할 Excel 파일 데이터입니다.

작가: Haider Ali
Haider Ali avatar Haider Ali avatar

Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.

LinkedIn

관련 문장 - Java Excel