格式为“date”的单元格中的date未被识别为date

我正在尝试使用Apache的Java POI将date添加到电子表格。 但是,我结束date格式的单元格中的date不被单元格的date,但作为string。 然而,当我随后打开电子表格时,只需要点击一下单元格即编辑它,而不进行有效的更改,并自动识别date格式。 我怎样才能使我的程序进行这最后一步,而不需要我干预? 非常感谢你,提前!

CreationHelper creationHelper = wb.getCreationHelper(); XSSFCellStyle cellStyleDate = wb.createCellStyle(); LocalDate start = LocalDate.of(2000, 1, 1); LocalDate end = LocalDate.of(2000, 12, 31); cellStyleDate.setDataFormat(creationHelper.createDataFormat().getFormat("dd.mm.yyyy")); int i = 1; for (LocalDate date = start; date.isBefore(end); date = date.plusDays(1)) { // wb.getSheetAt(0).createRow(i).createCell(0).setCellValue(date); wb.getSheetAt(0).createRow(i).createCell(0).setCellValue(date.toString()); // wb.getSheetAt(0).createRow(i).createCell(0).setCellValue(date.getDayOfMonth() + "." + date.getMonthValue() + "." + date.getYear()); wb.getSheetAt(0).getRow(i).getCell(0).setCellStyle(cellStyleDate); i++; } 

从文档中可以看出,有两种可能的方法来设置date值。 setCellValue(java.util.Calendar值)和setCellValue(java.util.Date值) 。 java.time.LocalDate还不支持使用java.time.LocalDate

所以你必须将LocalDate转换成java.util.Date然后再设置为单元格值。

例:

 import java.io.*; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.util.Date; import java.time.LocalDate; import java.time.ZoneId; import java.awt.Desktop; class LocalDateTest { public static void main(String[] args) { try { Workbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet("Sheet1"); CreationHelper creationHelper = wb.getCreationHelper(); CellStyle cellStyleDate = wb.createCellStyle(); LocalDate start = LocalDate.of(2000, 1, 1); LocalDate end = LocalDate.of(2000, 12, 31); cellStyleDate.setDataFormat(creationHelper.createDataFormat().getFormat("dd.mm.yyyy")); int i = 1; for (LocalDate localdate = start; localdate.isBefore(end.plusDays(1)); localdate = localdate.plusDays(1)) { Date date = Date.from(localdate.atStartOfDay(ZoneId.systemDefault()).toInstant()); wb.getSheetAt(0).createRow(i).createCell(0).setCellValue(date); wb.getSheetAt(0).getRow(i).getCell(0).setCellStyle(cellStyleDate); i++; } OutputStream out = new FileOutputStream("LocalDateTest.xlsx"); wb.write(out); wb.close(); System.out.println("Done"); File outputfile = new File("LocalDateTest.xlsx"); Desktop.getDesktop().open(outputfile); } catch (FileNotFoundException fnfex) { } catch (IOException ioex) { } } }