Java는 POI를 사용하여 Excel 파일을 가져옵니다. 이는 상대적으로 작동이 간단하고 xlsx 형식을 지원합니다.
POI 리소스 패키지 다운로드
공식 홈페이지에서 POI를 다운로드하세요. 이 글에서 선택한 버전은 3.17이며, 다운로드 후 파일명은 poi-bin-3.17.zip입니다. 처음에는 버전이 너무 최신이라 기존 프로젝트와 호환되지 않을까 걱정했는데, 나중에 프로그램을 실행해보니 아무런 문제도 발견되지 않았습니다.
poi-3.17 아래의 jar 패키지와 poi-3.17lib*.jar 패키지를 모두 프로젝트의 WEB-INFlib에 복사하고 프로젝트에서 컴파일 경로를 구성합니다.
Java 파일에 다음 참조를 추가합니다. 여기서 hssf는 xls 형식이고 xssf는 xlsx 형식입니다
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.ss.usermodel.DataFormatter; 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;
Excel 파일 읽기
HSSFWorkbook workbook = null; try { // 读取Excel文件 InputStream inputStream = new FileInputStream('c:\test.xlsx'); workbook = new HSSFWorkbook(inputStream); inputStream.close(); } catch (Exception e) { e.printStackTrace(); }
Excel 시트 트래버스
// 遍历Excel Sheetfor (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) { workbook.getSheetAt(numSheet); }
행 탐색
HSSFSheet sheet = workbook.getSheetAt(0); if (sheet != null) { // 循环行 for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) { HSSFRow row = sheet.getRow(rowNum); if (row == null) { continue;// 忽略并继续读取 } HSSFCell cell = row.getCell(0); if (cell == null) { continue; } //System.out.println('cell.getStringCellValue0():' + cell.getStringCellValue()); cell = row.getCell(1); if (cell == null) { continue; } //System.out.println('cell.getStringCellValue1():' + cell.getStringCellValue()); } }
POI에서 C숫자 셀 “Poi”에서 텍스트 값을 가져올 수 없는 문제가 발생했습니다
annot get a text value from a numeric cell “Poi”
导入Excel文件时,如果某列是数值类型,直接通过cell.getStringCellValue()
会报Cannot get a text value from a numeric cell “Poi”
Excel 파일을 가져올 때 열이 숫자 유형인 경우 를 직접 전달합니다. code>cell.getStringCellValue()
는 숫자 셀 "Poi"에서 텍스트 값을 가져올 수 없습니다
오류를 보고합니다.