인프런 커뮤니티 질문&답변

lwmwpark3523님의 프로필 이미지
lwmwpark3523

작성한 질문수

Java TPC 실전프로젝트 (Java API 활용)

엑셀 bookList 불러오는 예제 질문

작성

·

199

0

안녕하세요.

인프런 TPC 실전프로젝트를 수강중인 박민우입니다.

다름이 아니라 강의에서는 엑셀 확장자가 .xls로 수업중인데,

저는 실무에서 .xlsx로 엑셀을 많이 활용해서 이 확장자로 엑셀을 읽어들이고 있습니다.

현재 인터넷을 뒤져봐서 관련 library들을 다운받고, 실행하기까지는 성공했는데,

아래와 같이 에러가 뜹니다.

일단 읽을려고 하는 데이터들은 잘 읽어져서 오는데, 빨간색 5줄이 떠서요.

인터넷에 찾아보니깐 jdk9 이상부터는 뜨는 에러라고 하는 것 같더군요.

혹시 이 에러 지울려면 어떻게 해야 되는지 알 수 있을까요???

제 소스와 현재 TPCProject의 라이브러리들이 다음과 같으니 확인하시고,

해결하신 분이 계신다면 답변좀 부탁드리겠습니다.

작성한 코드

package com.tpc.second.ddd;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import kr.bit.structure.ExcelVO;

public class TPCProject16 {
	public static void main(String[] args) {
		// String filePath = "/kr/bit/file/bookList.xlsx";
		// String filePath = "bookList.xlsx";
		String filePath = "C:/JavaTPC/newWorkspace/JavaTPCProject/src/kr/bit/file/bookList.xlsx";
		
		List<ExcelVO> bookList = new ArrayList<ExcelVO>();
		System.out.println("try 진입 전 1111111111");
		// try (FileInputStream fis = new FileInputStream(filePath)) {
		// try (POIFSFileSystem fis = new POIFSFileSystem(new FileInputStream(filePath))) {
		// try(OPCPackage fis = OPCPackage.open(new File(filePath));) {
		try (FileInputStream fis = new FileInputStream(new File(filePath))) {
			System.out.println("try 진입 1111111111");
			// HSSFWorkbook workbook = new HSSFWorkbook(fis);
			XSSFWorkbook workbook = new XSSFWorkbook(fis);
			System.out.println("try 진입 222222222");
			// opcPackage.close();
			// HSSFSheet sheet = workbook.getSheetAt(0);
			XSSFSheet sheet = workbook.getSheetAt(0);
			Iterator rows = sheet.rowIterator();
			String[] excelColumn = new String[5];
			rows.next();
			while(rows.hasNext()) {
				// HSSFRow row = (HSSFRow) rows.next();
				XSSFRow row = (XSSFRow) rows.next();
				Iterator cells = row.cellIterator();
				int i = 0;
				while(cells.hasNext()) {
					// HSSFCell cell = (HSSFCell) cells.next();
					XSSFCell cell = (XSSFCell) cells.next();
					excelColumn[i] = cell.toString();
					i++;
				}	// while
				ExcelVO vo = new ExcelVO(excelColumn[0] , excelColumn[1] , excelColumn[2] , excelColumn[3] , excelColumn[4]);
				bookList.add(vo);
			}	// while
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		showExcelData(bookList);
	}
	
	private static void showExcelData(List<ExcelVO> dataList) {
		for(ExcelVO dataElement : dataList) {
			System.out.println(dataElement);
		}
	}
}

현재 라이브러리들

감사합니다.

즐거운 강의 되세요.

답변 1

0

lwmwpark3523님의 프로필 이미지
lwmwpark3523
질문자

사실 첫번째 사진의 빨간 5줄의 에러가 떠도 *.xlsx를 읽어오거나 수정, 생성하는데는 문제가 없습니다.

다만, 개발자 입장에서는 마음 한 구석이 편하지 않는 그런 사항이 있죠.

일단 떠도 실행하는데는 상관없으니깐 신경 안쓰셔도 될 문제이긴 합니다.

lwmwpark3523님의 프로필 이미지
lwmwpark3523

작성한 질문수

질문하기