이 프로젝트는 데이터를 얻기 위해 엑셀 문서를 구문 분석해야하므로 온라인으로 정보를 찾아 이번에는 사용과 결합하여 내 경험을 적어 두었습니다.
1. Maven 프로젝트에는 다음의 종속성이 필요합니다.
<pectionency> <groupId> org.apache.poi </groupId> <artifactid> poi </artifactid> <bersion> 3.10-final </version> </fectionency> <prectionement> <groupid> org.apache.poi </groupid> <artifactid> poi-ooxml </affecactid> 3.10-final </version> 3.10-final </version> 3.
수업에 완전한 주석으로 테스트 클래스로 직접 이동하십시오.
패키지 shindo.java; import java.io.fileInputStream; import java.io.inputStream; import java.util.arraylist; import java.util.list; import org.apache.poi.hssf.usermodel.hssfcell; import org.apache.poi.hssf.hssf.hssl.hssel org.apache.poi.hssf.usermodel.hssfworkbook; import org.apache.poi.ss.usermodel.cell; import org.apache.poi.xssf.usermodel.xssfcell; import org.apache.poi.xssf.usermodel.xssfrow; org.apache.poi.xssf.usermodel.xssfsheet; import org.apache.poi.xssf.usermodel.xssfworkbook; public class excelutil {public static void main (strings) {String path = "d : //ide//worksce-neonon//java//src/d.sr. try {list <list <string >> result = new Excelutil (). readxls (path); System.out.println (result.size ()); for (int i = 0; i <result.size (); i ++) {list <string> model = result.get (i); System.out.println ( "OrderNum :" + model.get (0) + "-> OrderAmount :" + model.get (1)); }} catch (예외 e) {e.printstacktrace (); }} /** * * @title : readxls * @description : xls 파일 처리 * @param @param path * @param @param path * @param @throws 예외 설정 파일 * @return 목록 <list <string >> return type * @throws * * 코드에서 프로세스 로직을 찾는 것은 어렵지 않습니다. * 1. 전체 Excel 파일을 나타내는 Memory Excel 파일 HSSFWorkbook 유형 객체. * 3.이 Excel 파일의 각 페이지에 대한 루프* 4. 각 페이지의 각 행에 대한 루프* 5. 5.이 셀의 값을 얻기 위해 각 행의 각 셀을 처리* 6.이 선의 결과를 목록 배열* 7에 추가하십시오* 7. 각 행의 결과를 최종 총 결과에 추가* 8에 추가 한 후 <문자열 <list <string (strays) <string (strays) <문자열 <string <string <string <string <string (strays). is = new FileInputStream (Path); // hssfworkbook 전체 Excel을 식별합니다 hssfworkbook hssfworkbook = 새로운 hssfworkbook (IS); List <list <string >> result = new ArrayList <list <string>> (); int size = hssfworkbook.getnumberofsheets (); // 각 페이지를 루프하고 (int numsheet = 0; numsheet <size; numsheet ++)의 현재 루프 페이지를 처리합니다. {// hssfsheet hssfsheet hssfsheet = hssfworkbook.getsheetat (numsheet); if (hssfsheet == null) {계속; } // 현재 페이지를 처리하고 (int rownum = 1; rownum <= hssfsheet.getlastrownum (); rownum ++) {// hssfrow를 나타냅니다 hssfrow hssfrow = hssfsheet.getrow (rownum); int mincolix = hssfrow.getfirstcellnum (); int maxcolix = hssfrow.getLastCellNum (); List <string> rowlist = new ArrayList <String> (); // 트래버스 및 변경 행을 처리하려면 각 셀 요소를 처리하여 (int colix = mincolix; colix <maxcolix; colix ++) {// hssfcell은 셀 hssfcell cell = hssfrow.getcell (colix)을 나타냅니다. if (cell == null) {계속; } rowlist.add (getStringVal (Cell)); } result.add (rowlist); }} 반환 결과; } / ** * * @title : readxlsx * @description : xlsx 파일 처리 * @param @param path * @param @param @return * @param @throws 예외 설정 파일 * @return <list <list <list <list >> return type * / private list <string >> readxlsx (문자열 path) {inputStream (inputStream); xssfworkbook xssfworkbook = 새로운 xssfworkbook (IS); List <list <string >> result = new ArrayList <list <string>> (); // 모든 페이지를 루프하고 (xssfsheet xssfsheet : xssfworkbook)의 현재 루프 페이지를 처리합니다. {if (xssfsheet == null) {계속; } // 현재 페이지를 처리하고 (int rownum = 1; rownum <= xssfsheet.getlastrownum (); rownum ++) {xssfrow xssfrow = xssfsheet.getrow (rownum); int mincolix = xssfrow.getfirstcellnum (); int maxcolix = xssfrow.getLastCellNum (); List <string> rowlist = new ArrayList <String> (); for (int colix = mincolix; colix <maxcolix; colix ++) {xssfcell cell = xssfrow.getcell (colix); if (cell == null) {계속; } rowlist.add (cell.toString ()); } result.add (rowlist); }} 반환 결과; } // 기존 문제/** 실제로, 우리가 얻고 싶은 데이터는 Excel의 데이터이지만 결국 결과는 이상적이지 않다는 것을 알게됩니다. * 따라서 값을 얻을 때 원하는 결과를 얻으려면 특별 처리를 수행해야합니다. 온라인 접근 방식은 원하는 결과를 얻기 위해 수치 데이터를 형식화하는 것입니다. * 다음은 다른 방법입니다. 이 전에 poi의 toString () 메소드를 살펴 보겠습니다. * *이 방법은 POI 메소드입니다. 소스 코드에서 처리 흐름이 다음과 같습니다. * 1. 셀 유형을 가져옵니다 * 2. 유형에 따라 데이터를 형식화하고 출력하십시오. 이것은 우리가 찾고 있지 않은 많은 것들을 만들어 주므로이 방법을 변화시킵니다. * / /*public String toString () {switch (getCellType ()) {case Cell_Type_Blank : return ""; CASE Cell_TYPE_BOOLEEN : return getBooleanCellValue ()? "참": "거짓"; CASE Cell_TYPE_ERROR : return erroreVal.getText (geterRorCellValue ()); CASE CELL_TYPE_FORMULA : return getCellFormula (); CASE Cell_TYPE_NUMERIC : if (dateUtil.IscellDateFormatted (this)) {dateformat SDF = new SimpleDateFormat ( "DD-MMM-YYYY") RETURN SDF.FORMAT (getDateCellValue ()); } return getNumericCellValue () + ""; CASE Cell_TYPE_STRING : return getRichStringCellValue (). toString (); 기본값 : "알 수없는 셀 유형 :" + getCellType (); }}* / / *** poi의 기본 tostring ()을 재건하는 방법은 다음과 같습니다.* @title : getStringVal* @description : 1. 낯선 유형 또는 비어 있거나 비어있는 경우, 반환 ""제어 문자열* 2. 숫자라면 문자열로 수정하십시오. 문자열 반환 유형 * @throws */ public static string getStringVal (hssfcell cell) {switch (cell.getCellType ()) {case cell.cell_type_boolean : return cell.getBooleanCellValue ()? "참": "거짓"; case cell.cell_type_formula : return cell.getCellFormula (); case cell.cell_type_numeric : cell.setcelltype (cell.cell_type_string); return cell.getStringCellValue (); case cell.cell_type_string : return cell.getStringCellValue (); 기본값 : 반환 ""; }}}요약
위는 POI 패키지를 사용하여 Java의 Excel 문서 코드를 읽는 것에 대한이 기사의 모든 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!