2016-12-15 1 views
1

다음 코드를 생성하여 프로젝트의 Java POI로 셀 POI의 셀 내용을 가져옵니다.다른 형식으로 Apache POI의 날짜 셀 내용 가져 오기

이 코드를 제출하는 file.xls가 있습니다. 출력에서이 형식으로 셀에있는 날짜를 가져올 수 있는지,이 Tue Apr 21 00:00:00 BST 2015처럼 확장되지 않았는지를 알고 싶지만 간단히 : 20/04/20, how 그럴 수있어?

import java.io.File; 
import java.io.FileInputStream; 
import java.util.Iterator; 
import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.Row; 
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.hssf.usermodel.HSSFDateUtil; 

public class Readsheet 
{ 
    static HSSFRow row; 
    public static void main(String[] args) throws Exception 
    { 
     FileInputStream fis = new FileInputStream(
     new File("test2.xls")); 
     HSSFWorkbook workbook = new HSSFWorkbook(fis); 
     HSSFSheet spreadsheet = workbook.getSheetAt(0); 
     Iterator <Row> rowIterator = spreadsheet.iterator(); 
     while (rowIterator.hasNext()) 
     { 
     row = (HSSFRow) rowIterator.next(); 
     Iterator <Cell> cellIterator = row.cellIterator(); 
     while (cellIterator.hasNext()) 
     { 
      Cell cell = cellIterator.next(); 
      switch (cell.getCellType()) 
      { 


       case Cell.CELL_TYPE_NUMERIC: 
        if (DateUtil.isCellDateFormatted(cell)) { 
         System.out.println(cell.getDateCellValue()); 
        } else { 
         System.out.println(cell.getNumericCellValue()); 
        } 

       break; 
       case Cell.CELL_TYPE_STRING: 
       System.out.print(cell.getStringCellValue() + " \t\t "); 
       break; 
       case Cell.CELL_TYPE_BOOLEAN: 
       System.out.println(cell.getBooleanCellValue() + " \t\t "); 
        break; 
       case Cell.CELL_TYPE_FORMULA: 
        System.out.println(cell.getCellFormula() + " \t\t "); 
        break; 
       case Cell.CELL_TYPE_BLANK: 
        System.out.println(); 
        break; 

      } 
     } 
     System.out.println(); 
     } 
     fis.close(); 
    } 
} 

감사합니다. 그것은 엑셀 파일에 지정된 동일한 형식으로 당신에게 cellValue 변수에 cell 값을 줄 것이다

String cellValue = new DataFormatter().formatCellValue(cell); 

-

답변

1

당신은 다음과 같은 코드를 사용할 수 있습니다. 따라서 Excel 파일에서 날짜가 dd/MM/yyyy 형식으로 표시되면 코드에서 동일한 형식으로 나타납니다.

+0

코드 대신 무엇을 사용합니까? 나는 그렇게 : '스위치 (cell.getCellType()) { 경우 Cell.CELL_TYPE_NUMERIC :. \t \t 새로운 DataFormatter() formatCellValue (셀); \t if (DateUtil.isCellDateFormatted (cell)) { System.out.println (cell.getDateCellValue() + "\ t \ t")); } else { System.out.println (cell.getNumericCellValue() + "\ t \ t"); } ' –

+0

알겠습니다. 나는 이것을 넣었습니다. 'System.out.println (새 DataFormatter(). formatCellValue (cell) + "\ t \ t"); ' 이제 코드가 올바르게 작동합니다! 대단히 감사합니다. –

+0

@Lost_in_the_code 의심의 여지를 제거하기위한 답을 업데이트했습니다. 그것이 당신의 질문을 해결했다면 대답을 승인하십시오. –

관련 문제