格式为“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) { } } }
- POI是否提供了一个事件驱动的API来读取XLS和XLSX文件?
- Apache POI&SXSSF:行数始终为0
- Excel以stringxls / xlsx不同的结果
- 使用Java中的Apache.poi,使用筛选器获取Excellogging
- 如何使用Apache POI设置数据透视表字段格式单元格
- XLConnect loadWorkbook错误 – POIXMLException(Java)
- Java,Apache POI,从MS Excel中看到的单元格值不会改变
- POI:意外的loggingtypesorg.apache.poi.hssf.record.HyperlinkRecord
- 公式不会自动计算