我读取.xlsx文件并检索日期值,应将其输入文本框字段。
在excel中,单元格值 04/05/2016 。
但是从细胞中获取日期值时,值为 04-May-2016 。
如何将 04-May-2016格式转换为mm / dd / yyy 。
代码:
public static String readExcel(String filePath,String fileName,String sheetName,int RowNumber,int ColNumber) throws Exception{
Object result = null;
try
{
sheet=getSheet(filePath, fileName, sheetName);
row=sheet.getRow(RowNumber);
if(row != null)
{
//System.out.println("Row is not empty");
cell= row.getCell(ColNumber);
if(cell!=null)
{
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:// numeric value in excel
if(DateUtil.isCellDateFormatted(cell)){
//DateUtil.truncate(new Date(), java.util.Calendar.DAY_OF_MONTH);
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
result = formatter.format(cell);
System.out.println("Today : " + result);
}
else{
result = new BigDecimal(cell.getNumericCellValue()).toPlainString();
}
break;
case Cell.CELL_TYPE_STRING: // string value in excel
result = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_BOOLEAN: // boolean value in excel
result = cell.getBooleanCellValue();
break;
case Cell.CELL_TYPE_BLANK: // blank value in excel
result = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_ERROR: // Error value in excel
result = cell.getErrorCellValue()+"";
break;
}
}
else
{
return null;
}
}
else
{
//System.out.println("Row is empty");
return null;
}
inputStream.close();
}
catch (Exception ex){
ex.printStackTrace();
}
return result.toString();
}
控制台:
java.lang.IllegalArgumentException: Cannot format given Object as a Date
at java.text.DateFormat.format(Unknown Source)
at java.text.Format.format(Unknown Source)
at utility.ExcelUtility.readExcel(ExcelUtility.java:116)
指导我伸出援手。
答案 0 :(得分:3)
要获取日期,您可以
Date myDate = cell.getDateCellValue()
然后像你的例子一样使用SimpleDateFormat:
if(DateUtil.isCellDateFormatted(cell)){
Date myDate = cell.getDateCellValue();
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String result = formatter.format(myDate);
System.out.println("Today : " + result);
}
答案 1 :(得分:0)
您应该在文件区域中将日期作为字符串。我的读者喜欢这个。
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
cellValue = String.valueOf((long) cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_STRING:
cellValue = cell.getStringCellValue();
break;
}
然后使用SimpleDateFormat解析字符串。
我的格式化程序;
public final static DateFormat BIRTHDAY_FORMATTER = new SimpleDateFormat("myPatterns");
和日期;
Date date = BIRTHDAY_FORMATTER.parse(myCellValue);