자바 엑셀 분석 방법(xls,xlsx 두 가지 형식)

가 져 올 jar
  1.commons-collections4-4.1.jar
  2.poi-3.17-beta1.jar
  3.poi-ooxml-3.17-beta1.jar
  4.poi-ooxml-schemas-3.17-beta1.jar
  5.xmlbeans-2.6.0.jar
주요 API
1.import org.apache.po.ss.usermodel.Workbook,Excel 문서 에 대응 합 니 다.
2.import org.apache.poi.hssf.usermodel.HSSFWorkbook,xls 형식의 Excel 문서 에 대응 합 니 다.
3.import org.apache.pai.xssf.usermodel.XSSFWorkbook,xlsx 형식의 Excel 문서 에 대응 합 니 다.
4.import org.apache.voi.ss.usermodel.Sheet,엑셀 문서 의 sheet 에 대응 합 니 다.
5.import org.apache.po.ss.usermodel.Row 는 sheet 의 한 줄 에 대응 합 니 다.
6.import org.apache.poi.ss.usermodel.Cell 은 하나의 셀 에 대응 합 니 다.
3.코드 는 다음 과 같다.

package poi;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Testpoi {
  public static void main(String[] args) {
    Workbook wb =null;
    Sheet sheet = null;
    Row row = null;
    List<Map<String,String>> list = null;
    String cellData = null;
    String filePath = "D:\\test.xlsx";
    String columns[] = {"name","age","score"};
    wb = readExcel(filePath);
    if(wb != null){
      //        
      list = new ArrayList<Map<String,String>>();
      //     sheet
      sheet = wb.getSheetAt(0);
      //      
      int rownum = sheet.getPhysicalNumberOfRows();
      //     
      row = sheet.getRow(0);
      //      
      int colnum = row.getPhysicalNumberOfCells();
      for (int i = 1; i<rownum; i++) {
        Map<String,String> map = new LinkedHashMap<String,String>();
        row = sheet.getRow(i);
        if(row !=null){
          for (int j=0;j<colnum;j++){
            cellData = (String) getCellFormatValue(row.getCell(j));
            map.put(columns[j], cellData);
          }
        }else{
          break;
        }
        list.add(map);
      }
    }
    //       list
    for (Map<String,String> map : list) {
      for (Entry<String,String> entry : map.entrySet()) {
        System.out.print(entry.getKey()+":"+entry.getValue()+",");
      }
      System.out.println();
    }
  }
  //  excel
  public static Workbook readExcel(String filePath){
    Workbook wb = null;
    if(filePath==null){
      return null;
    }
    String extString = filePath.substring(filePath.lastIndexOf("."));
    InputStream is = null;
    try {
      is = new FileInputStream(filePath);
      if(".xls".equals(extString)){
        return wb = new HSSFWorkbook(is);
      }else if(".xlsx".equals(extString)){
        return wb = new XSSFWorkbook(is);
      }else{
        return wb = null;
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return wb;
  }
  public static Object getCellFormatValue(Cell cell){
    Object cellValue = null;
    if(cell!=null){
      //  cell  
      switch(cell.getCellType()){
      case Cell.CELL_TYPE_NUMERIC:{
        cellValue = String.valueOf(cell.getNumericCellValue());
        break;
      }
      case Cell.CELL_TYPE_FORMULA:{
        //  cell       
        if(DateUtil.isCellDateFormatted(cell)){
          //       YYYY-mm-dd
          cellValue = cell.getDateCellValue();
        }else{
          //  
          cellValue = String.valueOf(cell.getNumericCellValue());
        }
        break;
      }
      case Cell.CELL_TYPE_STRING:{
        cellValue = cell.getRichStringCellValue().getString();
        break;
      }
      default:
        cellValue = "";
      }
    }else{
      cellValue = "";
    }
    return cellValue;
  }
}
4.운행 결과
코드 가 실행 되 기 전에 D 디스크 아래 에 test.xlsx 문서 가 있 는 것 을 보증 합 니 다.그렇지 않 으 면 파일 에 이상 을 찾 을 수 없습니다.엑셀 문서 의 표 두 는 코드 의String columns[] = {"name","age","score"}와 대응 해 야 한다.

총결산
위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 자바 해석 엑셀 방법(xls,xlsx 두 가지 형식)입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기