我创建了以下代码,以便通过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();
}
}
谢谢。
答案 0 :(得分:1)
您可以使用以下代码 -
String cellValue = new DataFormatter().formatCellValue(cell);
它会在cell
变量中为您提供cellValue
值,其格式与excel文件中指定的格式相同。因此,在excel文件中,如果您的日期显示为dd / MM / yyyy格式,您将在代码中获得相同的格式。