2014-09-03 2 views
0

Apache POI를 사용하여 Excel에서 데이터를 읽습니다. 다음과 같은 자바에서 읽는 동안 나는 수에 약간의 세포를 변환 할 :Excel에서 "숫자로 변환"을 수행하는 방법

Input 01.0234500 
Output 1.02345 

Input 412206362371 
Output 4.12206E+11 

Input 1234.201400002345 
Output 1234.2014 

것은 내가 Excel에서 "숫자로 변환"사용하고하면 잘 작동합니다. 하지만 자바에서 Excel 셀을 읽는 동안 동일한 결과물을 원합니다.

enter image description here

또한 =VALUE() Excel의 함수를 사용하여 달성 될 수있다. 하지만 Java에서 동일한 기능을 구현하려면 어떻게해야합니까?

+0

문자열을 가져오고 fromat로 변환 할 때 DecimalFormat을 사용해야합니다. – Jens

+0

@anupganatra 당신이 자바를 통해 얻고있는 어떤 데이터가 엑셀에서 더 명확한 지 알 수 있습니까? –

+0

@ ankur-singhal 스크린 샷에 표시된대로 입력 데이터를 가지고 있고 = VALUE() 함수를 적용하면 데이터를 입력 할 수 있습니다. 위에서 언급 한 것처럼 결과가 나타납니다. 이제 Java에서 Excel의 VALUE()와 동일한 기능을 원합니다. –

답변

2

당신이 규정 한 것을 성취하는 데는 여러 가지 방법이 있다고 생각하지만, 가장 직접적인 방법은 바로 VALUE() 함수를 사용하여 평가하는 것입니다. 이것은 확실히 가장 효율적인 방법은 아니지만 작동합니다.

기본적으로 입력 셀의 값을 읽은 다음 매개 변수로 원래 값을 가진 VALUE() 함수가 포함 된 새 셀 수식 셀을 만듭니다. 그런 다음 evalutateInCell을 호출하여 VALUE() 함수를 평가하고 셀 값을 결과로 바꿉니다.

 XSSFWorkbook wb = new XSSFWorkbook(); 
     XSSFSheet sheet = wb.createSheet("test"); 

     Row row = sheet.createRow(0); 
     Cell inCell = row.createCell(0);    
     inCell.setCellValue("01.0234500"); 
     Cell outCell = row.createCell(1); 

     FormulaEvaluator fev = wb.getCreationHelper().createFormulaEvaluator(); 
     String value = inCell.getStringCellValue();    
     outCell.setCellFormula("VALUE(" + value + ")"); 
     fev.evaluateInCell(outCell); 

원래 셀의 내용을 바꿀 때 같은 방법을 사용할 수 있습니다.

+0

Thanks Dave. 엑셀 시트에 쓰기를 원할 때 완벽하게 작동합니다. 그러나 필자의 경우, 엑셀 시트를 읽었으며 Java의 변수에서 출력을 원합니다. evaluateInCell()은 수식이 적용된 Excel 셀에서 출력을 작성하려는 경우 사용할 수 있습니다. –

+0

위의 숫자로 포맷 된 문자열을 얻으려고합니까? 또는 위의 숫자가'double '형태입니까? –

+0

위 코드는 수식을 적용하여 Excel 셀에 씁니다. 하지만 내가 원하는 것은 VALUE() 함수가 적용된 상태에서 Java의 변수로 출력을 얻는 것이다. 나는 엑셀 파일을 쓰지 않을 것이다. 또한 일부 변수에서 출력을 얻으려고 할 때 Excel에서 작성하는 동안 정확한 출력을 얻지 못합니다. –

관련 문제