2012-06-05 3 views
3

셀에 특정 데이터 형식을 적용해야합니다.POI를 사용하여 특정 셀 데이터 형식 적용

XSSFCellStyle cellStyle = workBook.createCellStyle();   
XSSFDataFormat format = workBook.createDataFormat(); 
cellStyle.setDataFormat(format.getFormat("m/d/yy h:mm")); 
dataCell.setCellType(1); //String 
dataCell.setCellStyle(cellStyle); 

는 데이터가 기록하지만 문제는 형식 내가 (Excel 응용 프로그램에서) 시트를 엑셀 열 경우에만, 내 데이터와 셀 내부를 클릭 을 적용한다는 것입니다되고있다.
그리고 Enter 키를 누릅니다. 그 다음에 만 형식이 적용됩니다.

모든 셀을 클릭하지 않고 형식을 적용하려면 어떻게해야합니까?

+0

스타일을 셀에 적용한 부분을 설명했습니다. 샘플 코드에 추가하십시오. –

+0

이 줄을 추가 (단 한 줄)하지만 형식이 셀에 설정되어 있기 때문에 문제가 있다고 생각하지 않습니다. 하지만 셀 끝을 선택하면 Enter 키를 누를 때만 형식을 볼 수 있습니다. – markiz

답변

3

문제는 셀을 문자열로 설정한다는 것입니다. 대부분의 경우 셀 서식 규칙은 숫자 셀에만 적용됩니다. (그들은 이미 문자열로 포맷하고 같이!) 그들은, 그 포맷되지 않은 문자열 세포에 적용되지 않습니다 Excel에서 그 열 때

XSSFCellStyle cellStyle = workBook.createCellStyle();   
XSSFDataFormat format = workBook.createDataFormat(); 
cellStyle.setDataFormat(format.getFormat("m/d/yy h:mm")); 
dataCell.setCellStyle(cellStyle); 

// Set Cell Type not really needed, the setCellValue does it 
dataCell.setCellType(Cell.CELL_TYPE_NUMERIC); 
// Set a date value (2012-06-05 08:50) 
dataCell.setCellValue(new Date(1338878999635)); 

, 그것은

예상대로이되어야한다
+0

텍스트 파일에서 입력 데이터를 읽었습니다 (2012 년 2 월 5 일 12시 34 분). 데이터를 Date 객체로 변환해야합니까? – markiz

+0

그리고 셀을 선택하고 Excel에서 Enter 키를 누르면 셀이 포맷되는 이유는 무엇입니까? – markiz

+0

예, Excel에서 올바르게 표시하려면 날짜가 아닌 문자열로 설정해야합니다 – Gagravarr

1

셀 서식을 Date으로 변경하는 방법입니다.

var workBook = new XSSFWorkbook(); 

var sheet = workBook.CreateSheet("Sheet1"); 

var dateStyle = workBook.CreateCellStyle(); 

var dataFormat = workBook.CreateDataFormat(); 

dateStyle.DataFormat = dataFormat.GetFormat("M/D/YYYY"); 

row.CreateCell(0).SetCellValue(item.ModifiedDate.HasValue ? 
      item.ModifiedDate.Value.ToShortDateString(): ""); 
row.Cells[0].CellStyle = dateStyle; // This will change your cell to date 
format. 
관련 문제