以不同的格式获取Apache POI中的日期单元格内容

时间:2016-12-15 12:41:04

标签: java excel apache apache-poi

我创建了以下代码,以便通过Java语言为项目获取Apache POI中的单元格内容。

我有一个提交到此代码的file.xls。我想知道是否有可能在输出中获得不同格式的单元格中存在的日期,而不是像2015年4月21日00:00:00 BST那样扩展,但只是:2015年4月21日,如何能做到吗?

import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;

public class Readsheet 
{
   static HSSFRow row;
   public static void main(String[] args) throws Exception 
   {
      FileInputStream fis = new FileInputStream(
      new File("test2.xls"));
      HSSFWorkbook workbook = new HSSFWorkbook(fis);
      HSSFSheet spreadsheet = workbook.getSheetAt(0);
      Iterator < Row > rowIterator = spreadsheet.iterator();
      while (rowIterator.hasNext()) 
      {
         row = (HSSFRow) rowIterator.next();
         Iterator < Cell > cellIterator = row.cellIterator();
         while ( cellIterator.hasNext()) 
         {
            Cell cell = cellIterator.next();
            switch (cell.getCellType()) 
            {


               case Cell.CELL_TYPE_NUMERIC:
                   if (DateUtil.isCellDateFormatted(cell)) {
                       System.out.println(cell.getDateCellValue());
                   } else {
                       System.out.println(cell.getNumericCellValue());
                   }

               break;
               case Cell.CELL_TYPE_STRING:
               System.out.print(cell.getStringCellValue() + " \t\t " );
               break;
               case Cell.CELL_TYPE_BOOLEAN:
               System.out.println(cell.getBooleanCellValue() + " \t\t ");
                   break;
               case Cell.CELL_TYPE_FORMULA:
                   System.out.println(cell.getCellFormula() + " \t\t ");
                   break;
               case Cell.CELL_TYPE_BLANK:
                   System.out.println();
                   break;

            }
         }
         System.out.println();
      }
      fis.close();
   }
}

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码 -

String cellValue = new DataFormatter().formatCellValue(cell);

它会在cell变量中为您提供cellValue值,其格式与excel文件中指定的格式相同。因此,在excel文件中,如果您的日期显示为dd / MM / yyyy格式,您将在代码中获得相同的格式。