문자열 개체를 전달할 때 Apache POI를 사용하여 날짜 형식 지정

Nov 17 2020

Excel에서 날짜 셀을 dd / mm / yyyy로 포맷해야합니다.

이것이 "올바른"표준이 아닐 수도 있다는 점에 감사하지만, 이것이 고객이 원하는 것입니다.

셀에 전달하는 날짜는 yyyy-mm-dd 형식입니다.

그래서,

이 코드가 있습니다.

Cell dateCell;
dateCell = row.createCell(3);
dateCell.setCellValue(p.getDateOfBirth());
CellStyle dateCellStyle = WorkBook.createCellStyle();
dateCellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("dd/mm/yyyy"));
dateCell.setCellStyle(dateCellStyle);

이것에 따르면 : http://www.kscodes.com/java/writing-various-date-formats-in-excel-using-poi/ (1)

나는 일해야한다고 믿는다. 하지만 엑셀 파일을 만들 때 날짜는 여전히 yyyy-mm-dd입니다.

여기 에서 java Apache POI 라이브러리를 사용하여 Excel에서 날짜 필드를 설정하는 방법을 살펴 보았습니다 . 그리고 나는 이것이 라인을 사용한다는 것을 알았습니다

cell.setCellType(CellType.NUMERIC);

하지만 (1)에는 이에 대한 언급이 없습니다.

아무도 내가 뭘 잘못하고 있는지 알아?

답변

2 LiveandLetLive Nov 18 2020 at 01:47

셀에 전달하는 날짜는 yyyy-mm-dd 형식입니다.

이것이 문제의 근본 원인입니다. API는 Date객체 를 전달하는 동안 객체 를 전달할 것으로 예상 String합니다. 날짜 문자열을 Date객체 로 파싱 하고 dateCell.setCellValue아래와 같이 전달해야합니다 .

Cell dateCell;
dateCell = row.createCell(3);
Date dateOfBirth = new SimpleDateFormat("yyyy-MM-dd").parse(p.getDateOfBirth() + "");
dateCell.setCellValue(dateOfBirth);
CellStyle dateCellStyle = WorkBook.createCellStyle();
dateCellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("dd/mm/yyyy"));
dateCell.setCellStyle(dateCellStyle);