logo

Java에서 Excel 파일을 읽는 방법

이번 시간에는 엑셀 파일에서 데이터를 읽는 방법에 대해 알아보겠습니다.

Java에서는 Excel 파일을 읽는 것이 Excel 파일의 셀로 인해 Word 파일을 읽는 것과 유사하지 않습니다. JDK는 Microsoft Excel이나 Word 문서를 읽거나 쓸 수 있는 직접적인 API를 제공하지 않습니다. 우리는 Apache POI인 타사 라이브러리에 의존해야 합니다.

아파치 POI란 무엇입니까?

아파치 POI (불량한 난독화 구현)은 두 형식 모두에서 Microsoft 문서를 읽고 쓰기 위한 Java API입니다. .xls 그리고 .xlsx . 여기에는 클래스와 인터페이스가 포함되어 있습니다. Apache POI 라이브러리는 Excel 파일을 읽기 위한 두 가지 구현을 제공합니다.

리눅스 어떤 명령
    HSSF(끔찍한 스프레드시트 형식) 구현:Excel 2003 이하 버전에서 작동하는 API를 나타냅니다.XSSF(XML 스프레드시트 형식) 구현:Excel 2007 이상 버전에서 작동하는 API를 나타냅니다.

Apache POI의 인터페이스 및 클래스

인터페이스

    학습장:이는 엑셀 통합 문서 . 에 의해 구현된 인터페이스입니다. HSSF워크북 그리고 XSSF워크북 .시트:을 나타내는 인터페이스이다. 엑셀 워크시트 . 시트는 셀 그리드를 나타내는 통합 문서의 중심 구조입니다. 시트 인터페이스가 확장됩니다. java.lang.Iterable .열:을 나타내는 인터페이스이기도 합니다. 스프레드시트의 Row 인터페이스는 확장됩니다. java.lang.Iterable . 두 가지 구체적인 클래스가 있습니다. HSSF로우 그리고 XSSF로우 .셀:인터페이스입니다. 이는 다음의 높은 수준의 표현입니다. 스프레드시트의 한 행에 HSSFC셀 그리고 XSSF셀 Cell 인터페이스를 구현합니다.

클래스

XLS 수업

    HSSF워크북:XLS 파일을 나타내는 클래스입니다.HSSF시트:XLS 파일의 시트를 나타내는 클래스입니다.HSSF행:XLS 파일의 시트에 있는 행을 나타내는 클래스입니다.HSSFC셀:XLS 파일의 행에 있는 셀을 나타내는 클래스입니다.

XLSX 클래스

    XSSF워크북:XLSX 파일을 나타내는 클래스입니다.XSSF시트:XLSX 파일의 시트를 나타내는 클래스입니다.XSSF행:XLSX 파일의 시트에 있는 행을 나타내는 클래스입니다.XSSF셀:XLSX 파일의 행에 있는 셀을 나타내는 클래스입니다.

XLS 파일에서 데이터를 읽는 단계

1 단계: Eclipse에서 간단한 Java 프로젝트를 만듭니다.

2 단계: 이제 프로젝트에 lib 폴더를 만듭니다.

3단계: lib 폴더에 다음 jar 파일을 다운로드하고 추가합니다.

4단계: 클래스 경로를 설정합니다:

프로젝트를 마우스 오른쪽 버튼으로 클릭 -> 경로 빌드 -> 외부 JAR 추가 -> 위의 모든 jar 파일 선택 -> 적용하고 닫습니다.

5단계: 이제 다음 이름으로 클래스 파일을 만듭니다. 읽기Excel파일데모 파일에 다음 코드를 작성합니다.

6단계: 'student.xls'라는 이름의 Excel 파일을 만들고 여기에 일부 데이터를 씁니다.


Java에서 Excel 파일을 읽는 방법

7단계: 프로그램을 저장하고 실행합니다.

엑셀파일(.xls) 파일을 읽는 예

 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Row; public class ReadExcelFileDemo { public static void main(String args[]) throws IOException { //obtaining input bytes from a file FileInputStream fis=new FileInputStream(new File('C:\demo\student.xls')); //creating workbook instance that refers to .xls file HSSFWorkbook wb=new HSSFWorkbook(fis); //creating a Sheet object to retrieve the object HSSFSheet sheet=wb.getSheetAt(0); //evaluating cell type FormulaEvaluator formulaEvaluator=wb.getCreationHelper().createFormulaEvaluator(); for(Row row: sheet) //iteration over row using for each loop { for(Cell cell: row) //iteration over cell using for each loop { switch(formulaEvaluator.evaluateInCell(cell).getCellType()) { case Cell.CELL_TYPE_NUMERIC: //field that represents numeric cell type //getting the value of the cell as a number System.out.print(cell.getNumericCellValue()+ '		'); break; case Cell.CELL_TYPE_STRING: //field that represents string cell type //getting the value of the cell as a string System.out.print(cell.getStringCellValue()+ '		'); break; } } System.out.println(); } } } 

산출:

 Name Age Height Swarit 23.0 5' Puneet 25.0 6'1' Swastik 22.0 5'5' Tejas 12.0 4'9' 

XLSX 파일 읽기

파일 형식을 제외하고 모든 단계는 동일하게 유지됩니다.

타이프라이터로 친 원고 날짜 시간

테이블: 직원.xslx


Java에서 Excel 파일을 읽는 방법

엑셀 파일(.xlsx) 읽기 예시

이 예에서는 XSSFWorkbook 클래스를 사용합니다.

 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 XLSXReaderExample { public static void main(String[] args) { try { File file = new File('C:\demo\employee.xlsx'); //creating a new file instance FileInputStream fis = new FileInputStream(file); //obtaining bytes from the file //creating Workbook instance that refers to .xlsx file XSSFWorkbook wb = new XSSFWorkbook(fis); XSSFSheet sheet = wb.getSheetAt(0); //creating a Sheet object to retrieve object Iterator itr = sheet.iterator(); //iterating over excel file while (itr.hasNext()) { Row row = itr.next(); Iterator cellIterator = row.cellIterator(); //iterating over each column while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: //field that represents string cell type System.out.print(cell.getStringCellValue() + '			'); break; case Cell.CELL_TYPE_NUMERIC: //field that represents number cell type System.out.print(cell.getNumericCellValue() + '			'); break; default: } } System.out.println(''); } } catch(Exception e) { e.printStackTrace(); } } } 

산출:

 Employee ID Employee Name Salary Designation Department 1223.0 Harsh 20000.0 Marketing Manager Marketing 3213.0 Vivek 15000.0 Financial Advisor Finance 6542.0 Krishna 21000.0 HR Manager HR 9213.0 Sarika 34000.0 Sales Manager Sales 

Excel 파일(.xlsx)에서 특정 셀 값 읽기

테이블: 직원데이터.xlsx


Java에서 Excel 파일을 읽는 방법

다음 예에서는 2의 값을 읽습니다.nd행과 2nd열. 행과 열 계산은 0부터 시작합니다. 따라서 프로그램은 '소프트웨어 엔지니어'를 반환합니다.


Java에서 Excel 파일을 읽는 방법

 //reading value of a particular cell import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadCellExample { public static void main(String[] args) { ReadCellExample rc=new ReadCellExample(); //object of the class //reading the value of 2nd row and 2nd column String vOutput=rc.ReadCellData(2, 2); System.out.println(vOutput); } //method defined for reading a cell public String ReadCellData(int vRow, int vColumn) { String value=null; //variable for storing the cell value Workbook wb=null; //initialize Workbook null try { //reading data from a file in the form of bytes FileInputStream fis=new FileInputStream('C:\demo\EmployeeData.xlsx'); //constructs an XSSFWorkbook object, by buffering the whole stream into the memory wb=new XSSFWorkbook(fis); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e1) { e1.printStackTrace(); } Sheet sheet=wb.getSheetAt(0); //getting the XSSFSheet object at given index Row row=sheet.getRow(vRow); //returns the logical row Cell cell=row.getCell(vColumn); //getting the cell representing the given column value=cell.getStringCellValue(); //getting cell value return value; //returns the cell value } } 

산출:

 Software Engineer