指导如何通过Apache poi读取date单元格

我正在导入一个有很多行的excel文件。 有些列是date,我必须阅读它们,但单元格的格式没有被Apache poi正确读取。 实际上date必须是dd / MM / YYYY,但是当我有04/13/2017 Apache poi图书馆认为它是在MM / dd / YYYY格式,因此读取date。

我怎样才能告诉Apache poi阅读正确格式的date?

下面是我的代码的一个例子:

case Cell.CELL_TYPE_NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { Date d = cell.getDateCellValue()); System.out.println(myWorkBook.getSheetName(i) + " " + cell.getNumericCellValue() + "\t"); } 

正确的方法是使用getDataFormatString,就像在这个答案中所做的那样validationMM / dd / yyyy格式的exceldate但是内置格式是有限的。

如果内置格式的限制困扰您,则通过数据格式化程序将值转换为string

 DataFormatter formatter = new DataFormatter(); String formattedValue = formatter.formatCellValue(cell); 

date字段的validation已经从Excel文件中执行,如果date格式不正确,则date将作为string读取。