Java poi XSSFWorkbook cell type 별 get

코딩하는감자·2022년 11월 14일

https://poi.apache.org/apidocs/dev/org/apache/poi/ss/usermodel/Cell.html#getCellType--

	List<String[]> listXlsx = new ArrayList<String[]>();
		try{
			System.out.println("File READ");
			XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream());
			logger.debug("Get Reader!");
			XSSFSheet sheet = workbook.getSheetAt(0); 
			Iterator<Row> rowIterator = sheet.iterator(); 

			int size = 0;
			while (rowIterator.hasNext()) {
				Row row = rowIterator.next();
				int cellLength = (int) row.getLastCellNum();	// 열의 총 개수
				Iterator<Cell> cellIterator = row.cellIterator();
				if (size == 0) {
					while (cellIterator.hasNext()) {
						Cell cell = cellIterator.next();
						size++;
					}
				} else {
					System.out.println(size);
					String[] xlist = new String[size];
					for(int i=0; i<cellLength; i++) {
						Cell cell = row.getCell(i);
						if(cell == null) {
							xlist[i] = "";
						}else {
							xlist[i] = cell.getStringCellValue();	// 이 부분!!!!
						}

					}
					listXlsx.add(xlist);
				}
			}
        } catch  (IOException ioe) {
			logger.error("File IO Error", ioe);
			
		}

아래처럼 변경했다

	List<String[]> listXlsx = new ArrayList<String[]>();
		try{
			System.out.println("File READ");
			XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream());
			logger.debug("Get Reader!");
			XSSFSheet sheet = workbook.getSheetAt(0); 
			Iterator<Row> rowIterator = sheet.iterator(); 
			
			int size = 0;
			while (rowIterator.hasNext()) {
				Row row = rowIterator.next();
				int cellLength = (int) row.getLastCellNum();	// 열의 총 개수
				Iterator<Cell> cellIterator = row.cellIterator();
				if (size == 0) {
					while (cellIterator.hasNext()) {
						Cell cell = cellIterator.next();
						size++;
					}
				} else {
					System.out.println(size);
					String[] xlist = new String[size];
					for(int i=0; i<cellLength; i++) {
						Cell cell = row.getCell(i);
						if(cell == null) {
							xlist[i] = "";
						}else {	// 이렇게 변경!!!!
							/*
							 * Cell.CELL_TYPE_NUMERIC	0
							 * Cell.CELL_TYPE_STRING	1
							 * Cell.CELL_TYPE_FORMULA	2
							 * Cell.CELL_TYPE_BLANK		3
							 * Cell.CELL_TYPE_BOOLEAN	4
							 * Cell.CELL_TYPE_ERROR		5
							 */
							
							switch(cell.getCellType()) {
							case 0: 
								xlist[i] = StringUtil.get( (int)cell.getNumericCellValue() );
								break;
							case 1:
								xlist[i] = StringUtil.get( cell.getStringCellValue() );
								break;
							case 2:
								xlist[i] = StringUtil.get( cell.getCellFormula() );
								break;
							case 3:
								//
								break;
							case 4:
								xlist[i] = StringUtil.get( cell.getBooleanCellValue() );
								break;
							case 5:
								throw new IOException();
							default:
								xlist[i] = "";
								break;
							}
						}
						
					}
					listXlsx.add(xlist);
				}
			}
        } catch  (IOException ioe) {
			logger.error("File IO Error", ioe);
			
		}
profile
나는 말하는 감자다

0개의 댓글