2017-05-16 1 views
1

私は、excelシートで指定されている日付と同じ日付を取得するためにApache poi DataFormatterクラスを使用しています。しかし、以下のケースでは失敗しています。日付を間違って取得するapache poiを使用しているときのフォーマットセル上のDataFormatter

たとえば、私は19/9/2017として日付を指定すると19/9/17になります。

私は以下のコードを使用して、日付の値をExcelシートに記載されているものと同じにしています。

DataFormatter df = new DataFormatter(); 
String stringCellValue = df.formatCellValue(cell).toString(); 
+1

日付を含むセルがデフォルトの日付書式(短い日付)として書式設定されている場合、書式ID 0xE(14)のみがファイルに格納されます。だから、 'DataFormatter'は特別な' Excel'がこの日付をどのように表示するかを決める機会がありません。DataFormatStringがないからです。 https://stackoverflow.com/questions/34900605/excell-cell-style-issue/34902174#34902174を参照してください。 –

答えて

1
XSSFWorkbook wb  = new XSSFWorkbook(ExcelFileToRead); 
XSSFSheet sheet = wb.getSheetAt(0); 
XSSFRow row  = sheet.getRow(0); 
XSSFCell cell = row.getCell((short)0); 
short x=wb.createDataFormat().getFormat("dd/m/yyyy;@"); 
CellStyle dateCellFormat = wb.createCellStyle(); 
dateCellFormat.setDataFormat(x); 

cell.setCellStyle(dateCellFormat); 
DataFormatter df = new DataFormatter(); 
String stringCellValue = df.formatCellValue(cell).toString(); 
System.out.println(stringCellValue); 

入力19/12/201719/09/2017ため19/9/2017ため、このコード印刷19/12/2017。私のコードを自分のものに適応させて作業させることができるかもしれません。

関連する問題