我创建以下代码,以便通过Java语言获取Apache中用于项目的单元格内容。
我有一个提交给这段代码的file.xls。我想知道是否有可能在输出中以不同的格式获得单元格中的日期,而不是像这个Tue Apr 21 00:00:00 :00 BST 2015,而简单地说是: 21/04/2015,如何做到这一点?
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();
}
}
谢谢。
发布于 2016-12-15 06:41:58
你可以使用以下代码-
String cellValue = new DataFormatter().formatCellValue(cell);
它将以与excel文件中指定的格式相同的格式在cellValue
变量中为您提供cellValue
值。因此,在excel文件中,如果您的日期显示为dd/MM/yyyy格式,您将在代码中获得相同的格式。
https://stackoverflow.com/questions/41164437
复制