formatar datas usando apache poi ao passar um objeto string
Preciso formatar uma célula de data no excel para ser dd / mm / aaaa
Agradeço que talvez não seja o padrão "correto", mas é isso que o cliente deseja ...
A data que estou passando para a célula está formatada em aaaa-mm-dd
Assim,
Eu tenho este código:
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);
que de acordo com isto: http://www.kscodes.com/java/writing-various-date-formats-in-excel-using-poi/ (1)
Eu acredito que deve funcionar. Mas quando eu crio o arquivo excel, a data ainda é aaaa-mm-dd
Eu olhei aqui como definir o campo de data no Excel usando a biblioteca Java Apache Poi? e eu noto que isso usa a linha
cell.setCellType(CellType.NUMERIC);
mas não há menção disso em (1)
Alguém tem ideia do que estou fazendo de errado?
Respostas
A data que estou passando para a célula está formatada em aaaa-mm-dd
Essa é a causa raiz do problema. A API espera que você passe um Dateobjeto enquanto você está passando um Stringobjeto. Você precisa analisar sua string de data em um Dateobjeto e passar o mesmo para dateCell.setCellValuecomo mostrado abaixo:
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);